| 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
|
|
|