| Index: src/arm/builtins-arm.cc
|
| diff --git a/src/arm/builtins-arm.cc b/src/arm/builtins-arm.cc
|
| index d47acaad7848b51f0cb2c1c2d042528fe79128c6..af5da61a61ff00c51090295d5ecea01e979df7e1 100644
|
| --- a/src/arm/builtins-arm.cc
|
| +++ b/src/arm/builtins-arm.cc
|
| @@ -989,12 +989,6 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
| __ PushFixedFrame(r1);
|
| __ add(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp));
|
|
|
| - // Push new.target, dispatch table pointer and zero for bytecode array offset.
|
| - __ mov(r0, Operand(0));
|
| - __ mov(r2, Operand(ExternalReference::interpreter_dispatch_table_address(
|
| - masm->isolate())));
|
| - __ Push(r3, r2, r0);
|
| -
|
| // Get the bytecode array from the function object and load the pointer to the
|
| // first entry into kInterpreterBytecodeRegister.
|
| __ ldr(r0, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset));
|
| @@ -1010,6 +1004,10 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
| __ Assert(eq, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry);
|
| }
|
|
|
| + // Push new.target, bytecode array and zero for bytecode array offset.
|
| + __ mov(r0, Operand(0));
|
| + __ Push(r3, kInterpreterBytecodeArrayRegister, r0);
|
| +
|
| // Allocate the local and temporary register file on the stack.
|
| {
|
| // Load frame size from the BytecodeArray object.
|
| @@ -1052,8 +1050,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
| Operand(InterpreterFrameConstants::kRegisterFilePointerFromFp));
|
| __ mov(kInterpreterBytecodeOffsetRegister,
|
| Operand(BytecodeArray::kHeaderSize - kHeapObjectTag));
|
| - __ ldr(kInterpreterDispatchTableRegister,
|
| - MemOperand(fp, InterpreterFrameConstants::kDispatchTableFromFp));
|
| + __ mov(kInterpreterDispatchTableRegister,
|
| + Operand(ExternalReference::interpreter_dispatch_table_address(
|
| + masm->isolate())));
|
|
|
| // Dispatch to the first bytecode handler for the function.
|
| __ ldrb(r1, MemOperand(kInterpreterBytecodeArrayRegister,
|
| @@ -1165,12 +1164,10 @@ static void Generate_EnterBytecodeDispatch(MacroAssembler* masm) {
|
| InterpreterFrameConstants::kContextFromRegisterPointer));
|
|
|
| // Get the bytecode array pointer from the frame.
|
| - __ ldr(r1,
|
| - MemOperand(kInterpreterRegisterFileRegister,
|
| - InterpreterFrameConstants::kFunctionFromRegisterPointer));
|
| - __ ldr(r1, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset));
|
| - __ ldr(kInterpreterBytecodeArrayRegister,
|
| - FieldMemOperand(r1, SharedFunctionInfo::kFunctionDataOffset));
|
| + __ ldr(
|
| + kInterpreterBytecodeArrayRegister,
|
| + MemOperand(kInterpreterRegisterFileRegister,
|
| + InterpreterFrameConstants::kBytecodeArrayFromRegisterPointer));
|
|
|
| if (FLAG_debug_code) {
|
| // Check function data field is actually a BytecodeArray object.
|
|
|