Chromium Code Reviews| Index: src/arm/lithium-codegen-arm.cc |
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
| index d915c7d247bb9d13248840f43ae841e2be4ddd8b..84e9fc530f40cf66db79012e0e81ae32832ee4af 100644 |
| --- a/src/arm/lithium-codegen-arm.cc |
| +++ b/src/arm/lithium-codegen-arm.cc |
| @@ -3851,13 +3851,14 @@ void LCodeGen::DoStoreKeyedFastElement(LStoreKeyedFastElement* instr) { |
| Register scratch = scratch0(); |
| // Do the store. |
| + int offset = 0; |
| + Register store_base = scratch; |
| if (instr->key()->IsConstantOperand()) { |
| ASSERT(!instr->hydrogen()->NeedsWriteBarrier()); |
| LConstantOperand* const_operand = LConstantOperand::cast(instr->key()); |
| - int offset = |
| - (ToInteger32(const_operand) + instr->additional_index()) * kPointerSize |
| - + FixedArray::kHeaderSize; |
| - __ str(value, FieldMemOperand(elements, offset)); |
| + offset = (ToInteger32(const_operand) + instr->additional_index()) * |
|
Michael Starzinger
2012/07/31 13:42:32
Can we use FixedArray::OffsetOfElementAt() for thi
|
| + kPointerSize + FixedArray::kHeaderSize; |
| + store_base = elements; |
| } else { |
| // Even though the HLoadKeyedFastElement instruction forces the input |
| // representation for the key to be an integer, the input gets replaced |
| @@ -3869,17 +3870,17 @@ void LCodeGen::DoStoreKeyedFastElement(LStoreKeyedFastElement* instr) { |
| } else { |
| __ add(scratch, elements, Operand(key, LSL, kPointerSizeLog2)); |
| } |
| - uint32_t offset = FixedArray::kHeaderSize + |
| + offset = FixedArray::kHeaderSize + |
| (instr->additional_index() << kPointerSizeLog2); |
| - __ str(value, FieldMemOperand(scratch, offset)); |
| } |
| + __ str(value, FieldMemOperand(store_base, offset)); |
| if (instr->hydrogen()->NeedsWriteBarrier()) { |
| HType type = instr->hydrogen()->value()->type(); |
| SmiCheck check_needed = |
| type.IsHeapObject() ? OMIT_SMI_CHECK : INLINE_SMI_CHECK; |
| // Compute address of modified element and store it into key register. |
| - __ add(key, scratch, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); |
| + __ add(key, store_base, Operand(offset - kHeapObjectTag)); |
| __ RecordWrite(elements, |
| key, |
| value, |