Index: src/hydrogen-instructions.cc |
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc |
index 36d1e11edab37c49aea9aa725866799eb28b83c6..95d9b4831ccc2cf07b68631d484e66893d978016 100644 |
--- a/src/hydrogen-instructions.cc |
+++ b/src/hydrogen-instructions.cc |
@@ -2050,7 +2050,8 @@ HConstant::HConstant(Handle<Object> handle, Representation r) |
has_int32_value_(false), |
has_double_value_(false), |
is_internalized_string_(false), |
- boolean_value_(handle->BooleanValue()) { |
+ boolean_value_(handle->BooleanValue()), |
+ raw_address_(NULL) { |
if (handle_->IsNumber()) { |
double n = handle_->Number(); |
has_int32_value_ = IsInteger32(n); |
@@ -2075,6 +2076,7 @@ HConstant::HConstant(Handle<Object> handle, Representation r) |
HConstant::HConstant(Handle<Object> handle, |
+ Address raw_address, |
Representation r, |
HType type, |
bool is_internalize_string, |
@@ -2084,6 +2086,7 @@ HConstant::HConstant(Handle<Object> handle, |
has_double_value_(false), |
is_internalized_string_(is_internalize_string), |
boolean_value_(boolean_value), |
+ raw_address_(raw_address), |
type_from_value_(type) { |
ASSERT(!handle.is_null()); |
ASSERT(!type.IsUninitialized()); |
@@ -2095,7 +2098,8 @@ HConstant::HConstant(Handle<Object> handle, |
HConstant::HConstant(int32_t integer_value, |
Representation r, |
Handle<Object> optional_handle) |
- : has_int32_value_(true), |
+ : handle_(optional_handle), |
+ has_int32_value_(true), |
has_double_value_(true), |
is_internalized_string_(false), |
boolean_value_(integer_value != 0), |
@@ -2108,7 +2112,8 @@ HConstant::HConstant(int32_t integer_value, |
HConstant::HConstant(double double_value, |
Representation r, |
Handle<Object> optional_handle) |
- : has_int32_value_(IsInteger32(double_value)), |
+ : handle_(optional_handle), |
+ has_int32_value_(IsInteger32(double_value)), |
has_double_value_(true), |
is_internalized_string_(false), |
boolean_value_(double_value != 0 && !isnan(double_value)), |
@@ -2133,8 +2138,13 @@ HConstant* HConstant::CopyToRepresentation(Representation r, Zone* zone) const { |
if (has_int32_value_) return new(zone) HConstant(int32_value_, r, handle_); |
if (has_double_value_) return new(zone) HConstant(double_value_, r, handle_); |
ASSERT(!handle_.is_null()); |
- return new(zone) HConstant( |
- handle_, r, type_from_value_, is_internalized_string_, boolean_value_); |
+ ASSERT_NE(NULL, raw_address_); |
+ return new(zone) HConstant(handle_, |
+ raw_address_, |
+ r, |
+ type_from_value_, |
+ is_internalized_string_, |
+ boolean_value_); |
} |