Index: src/a64/stub-cache-a64.cc |
diff --git a/src/a64/stub-cache-a64.cc b/src/a64/stub-cache-a64.cc |
index 291da65d44f4113e2c9ff9f226a766571238237a..0d1ecd2d4e83caf51aa6ac9a15b1be3b2fd8750c 100644 |
--- a/src/a64/stub-cache-a64.cc |
+++ b/src/a64/stub-cache-a64.cc |
@@ -461,16 +461,15 @@ void StoreStubCompiler::GenerateStoreTransition(MacroAssembler* masm, |
// TODO(verwaest): Share this code as a code stub. |
SmiCheck smi_check = representation.IsTagged() |
? INLINE_SMI_CHECK : OMIT_SMI_CHECK; |
+ Register prop_reg = |
+ (FLAG_track_double_fields && representation.IsDouble()) ? storage_reg |
ulan
2014/03/20 10:39:37
why FLAG_track_double_fields?
|
+ : value_reg; |
if (index < 0) { |
// Set the property straight into the object. |
int offset = object->map()->instance_size() + (index * kPointerSize); |
// TODO(jbramley): This construct appears in several places in this |
// function. Try to clean it up, perhaps using a result_reg. |
- if (representation.IsDouble()) { |
- __ Str(storage_reg, FieldMemOperand(receiver_reg, offset)); |
- } else { |
- __ Str(value_reg, FieldMemOperand(receiver_reg, offset)); |
- } |
+ __ Str(prop_reg, FieldMemOperand(receiver_reg, offset)); |
if (!representation.IsSmi()) { |
// Update the write barrier for the array address. |
@@ -492,11 +491,7 @@ void StoreStubCompiler::GenerateStoreTransition(MacroAssembler* masm, |
// Get the properties array |
__ Ldr(scratch1, |
FieldMemOperand(receiver_reg, JSObject::kPropertiesOffset)); |
- if (representation.IsDouble()) { |
- __ Str(storage_reg, FieldMemOperand(scratch1, offset)); |
- } else { |
- __ Str(value_reg, FieldMemOperand(scratch1, offset)); |
- } |
+ __ Str(prop_reg, FieldMemOperand(scratch1, offset)); |
if (!representation.IsSmi()) { |
// Update the write barrier for the array address. |