Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index a87d623790e0007198cd6bf08ca20a1662606154..df9b3f8f252c0b7b21df290235019f196f42e760 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -5799,7 +5799,8 @@ HInstruction* HOptimizedGraphBuilder::BuildLoadNamedField( |
} |
HObjectAccess access = info->access(); |
- if (access.representation().IsDouble()) { |
+ if (access.representation().IsDouble() && |
+ (!FLAG_unbox_double_fields || !access.IsInobject())) { |
// Load the heap number. |
checked_object = Add<HLoadNamedField>( |
checked_object, static_cast<HValue*>(NULL), |
@@ -5831,7 +5832,8 @@ HInstruction* HOptimizedGraphBuilder::BuildStoreNamedField( |
HObjectAccess field_access = info->access(); |
HStoreNamedField *instr; |
- if (field_access.representation().IsDouble()) { |
+ if (field_access.representation().IsDouble() && |
+ (!FLAG_unbox_double_fields || !field_access.IsInobject())) { |
HObjectAccess heap_number_access = |
field_access.WithRepresentation(Representation::Tagged()); |
if (transition_to_field) { |
@@ -11004,7 +11006,8 @@ void HOptimizedGraphBuilder::BuildEmitInObjectProperties( |
Representation representation = details.representation(); |
HInstruction* value_instruction; |
- if (representation.IsDouble()) { |
+ if (representation.IsDouble() && |
+ (!FLAG_unbox_double_fields || !access.IsInobject())) { |
// Allocate a HeapNumber box and store the value into it. |
HValue* heap_number_constant = Add<HConstant>(HeapNumber::kSize); |
// This heap number alloc does not have a corresponding |