has_double_value_(false) {
// Dereferencing here is safe: the value of a number object does not change.
AllowHandleDereference allow_handle_deref(Isolate::Current());
- SetFlag(kUseGVN);
if (handle_->IsNumber()) {
double n = handle_->Number();
has_int32_value_ = IsInteger32(n);
r = Representation::Tagged();
}
}
- set_representation(r);
+ Initialize(r);
}
has_double_value_(true),
int32_value_(integer_value),
double_value_(FastI2D(integer_value)) {
- set_representation(r);
- SetFlag(kUseGVN);
+ Initialize(r);
}
has_double_value_(true),
int32_value_(DoubleToInt32(double_value)),
double_value_(double_value) {
+ Initialize(r);
+}
+
+
+void HConstant::Initialize(Representation r) {
set_representation(r);
SetFlag(kUseGVN);
+ if (representation().IsInteger32()) {
+ ClearGVNFlag(kDependsOnOsrEntries);
+ }
}
}
private:
+ void Initialize(Representation r);
+
virtual bool IsDeletable() const { return true; }
// If this is a numerical constant, handle_ either points to to the