Chromium Code Reviews| Index: src/arm/code-stubs-arm.cc |
| diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
| index ecd2082cd02cba0796870e78c90864d9e9563c12..b99ad61e5822eb46b67f1764dd34438ec64fa9f1 100644 |
| --- a/src/arm/code-stubs-arm.cc |
| +++ b/src/arm/code-stubs-arm.cc |
| @@ -1100,10 +1100,10 @@ void CEntryStub::Generate(MacroAssembler* masm) { |
| __ ldr(r1, MemOperand(r1)); |
| __ mov(r2, Operand(pending_handler_offset_address)); |
| __ ldr(r2, MemOperand(r2)); |
| + __ add(r1, r1, Operand(Code::kHeaderSize - kHeapObjectTag)); // Code start |
| if (FLAG_enable_embedded_constant_pool) { |
| __ LoadConstantPoolPointerRegisterFromCodeTargetAddress(r1); |
| } |
| - __ add(r1, r1, Operand(Code::kHeaderSize - kHeapObjectTag)); |
| __ add(pc, r1, r2); |
| } |
| @@ -1347,13 +1347,21 @@ void InstanceofStub::Generate(MacroAssembler* masm) { |
| __ ldr(map_load_offset, MemOperand(map_load_offset)); |
| __ str(map, FieldMemOperand(map_load_offset, Cell::kValueOffset)); |
| - __ mov(r8, map); |
| + Register value_scratch = (FLAG_enable_embedded_constant_pool ? r6 : r8); |
| + if (FLAG_enable_embedded_constant_pool) { |
| + __ push(value_scratch); |
| + } |
| + |
| + __ mov(value_scratch, map); |
| // |map_load_offset| points at the beginning of the cell. Calculate the |
| // field containing the map. |
| __ add(function, map_load_offset, Operand(Cell::kValueOffset - 1)); |
| - __ RecordWriteField(map_load_offset, Cell::kValueOffset, r8, function, |
| - kLRHasNotBeenSaved, kDontSaveFPRegs, |
| + __ RecordWriteField(map_load_offset, Cell::kValueOffset, value_scratch, |
|
rmcilroy
2015/06/08 11:11:10
Could we just use "scratch" here? It looks like it
MTBrandyberry
2015/06/08 13:52:39
Good catch. Done.
|
| + function, kLRHasNotBeenSaved, kDontSaveFPRegs, |
| OMIT_REMEMBERED_SET, OMIT_SMI_CHECK); |
| + if (FLAG_enable_embedded_constant_pool) { |
| + __ pop(value_scratch); |
| + } |
| } |
| // Register mapping: r3 is object map and r4 is function prototype. |
| @@ -2433,7 +2441,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) { |
| // this position in a symbol (see static asserts in type-feedback-vector.h). |
| Label check_allocation_site; |
| Register feedback_map = r5; |
| - Register weak_value = r8; |
| + Register weak_value = r6; |
| __ ldr(weak_value, FieldMemOperand(r4, WeakCell::kValueOffset)); |
| __ cmp(r1, weak_value); |
| __ b(eq, &done); |
| @@ -4494,7 +4502,7 @@ void LoadICStub::GenerateImpl(MacroAssembler* masm, bool in_frame) { |
| Register slot = LoadWithVectorDescriptor::SlotRegister(); // r0 |
| Register feedback = r4; |
| Register receiver_map = r5; |
| - Register scratch1 = r8; |
| + Register scratch1 = r6; |
| __ add(feedback, vector, Operand::PointerOffsetFromSmiKey(slot)); |
| __ ldr(feedback, FieldMemOperand(feedback, FixedArray::kHeaderSize)); |
| @@ -4551,7 +4559,7 @@ void KeyedLoadICStub::GenerateImpl(MacroAssembler* masm, bool in_frame) { |
| Register slot = LoadWithVectorDescriptor::SlotRegister(); // r0 |
| Register feedback = r4; |
| Register receiver_map = r5; |
| - Register scratch1 = r8; |
| + Register scratch1 = r6; |
| __ add(feedback, vector, Operand::PointerOffsetFromSmiKey(slot)); |
| __ ldr(feedback, FieldMemOperand(feedback, FixedArray::kHeaderSize)); |