Index: src/arm/builtins-arm.cc |
diff --git a/src/arm/builtins-arm.cc b/src/arm/builtins-arm.cc |
index 236848b71740b7d7eb7e65601c4cc87198689aa3..c3ea0be86d6f0df0cc5d52d59ab8eb616e2ddd09 100644 |
--- a/src/arm/builtins-arm.cc |
+++ b/src/arm/builtins-arm.cc |
@@ -985,11 +985,12 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) { |
FrameScope frame_scope(masm, StackFrame::MANUAL); |
__ PushFixedFrame(r1); |
__ add(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp)); |
- __ push(r3); |
- // Push zero for bytecode array offset. |
+ // Push new.target, dispatch table pointer and zero for bytecode array offset. |
__ mov(r0, Operand(0)); |
- __ push(r0); |
+ __ 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. |
@@ -1048,9 +1049,8 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) { |
Operand(InterpreterFrameConstants::kRegisterFilePointerFromFp)); |
__ mov(kInterpreterBytecodeOffsetRegister, |
Operand(BytecodeArray::kHeaderSize - kHeapObjectTag)); |
- __ mov(kInterpreterDispatchTableRegister, |
- Operand(ExternalReference::interpreter_dispatch_table_address( |
- masm->isolate()))); |
+ __ ldr(kInterpreterDispatchTableRegister, |
+ MemOperand(fp, InterpreterFrameConstants::kDispatchTableFromFp)); |
// Dispatch to the first bytecode handler for the function. |
__ ldrb(r1, MemOperand(kInterpreterBytecodeArrayRegister, |