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..fee2c3297068a2db14daf10da9ef859d3dcb58eb 100644 |
--- a/src/a64/stub-cache-a64.cc |
+++ b/src/a64/stub-cache-a64.cc |
@@ -461,16 +461,11 @@ 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 = (representation.IsDouble()) ? storage_reg : value_reg; |
ulan
2014/03/20 10:49:27
Nit: no need to put representation.IsDouble() in (
|
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 +487,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. |