| Index: src/arm/code-stubs-arm.cc
|
| diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc
|
| index 995f0d9f4386d9bbaf21a4d3476a94e8628f3d2f..82fa8ceaf318a043620d0c67255c4dc344ba97fe 100644
|
| --- a/src/arm/code-stubs-arm.cc
|
| +++ b/src/arm/code-stubs-arm.cc
|
| @@ -6315,14 +6315,8 @@ void DirectCEntryStub::Generate(MacroAssembler* masm) {
|
|
|
| void DirectCEntryStub::GenerateCall(MacroAssembler* masm,
|
| ExternalReference function) {
|
| - __ mov(lr, Operand(reinterpret_cast<intptr_t>(GetCode().location()),
|
| - RelocInfo::CODE_TARGET));
|
| __ mov(r2, Operand(function));
|
| - // Push return address (accessible to GC through exit frame pc).
|
| - // Note that using pc with str is deprecated.
|
| - __ add(ip, pc, Operand(4));
|
| - __ str(ip, MemOperand(sp, 0));
|
| - __ Jump(r2); // Call the api function.
|
| + GenerateCall(masm, r2);
|
| }
|
|
|
|
|
| @@ -6332,9 +6326,13 @@ void DirectCEntryStub::GenerateCall(MacroAssembler* masm,
|
| RelocInfo::CODE_TARGET));
|
| // Push return address (accessible to GC through exit frame pc).
|
| // Note that using pc with str is deprecated.
|
| - __ add(ip, pc, Operand(4));
|
| + Label start;
|
| + __ bind(&start);
|
| + __ add(ip, pc, Operand(Assembler::kInstrSize));
|
| __ str(ip, MemOperand(sp, 0));
|
| __ Jump(target); // Call the C++ function.
|
| + ASSERT_EQ(Assembler::kInstrSize + Assembler::kPcLoadDelta,
|
| + masm->SizeOfCodeGeneratedSince(&start));
|
| }
|
|
|
|
|
|
|