| Index: src/ia32/builtins-ia32.cc
|
| diff --git a/src/ia32/builtins-ia32.cc b/src/ia32/builtins-ia32.cc
|
| index 1715ac156291f14d4e3d03c57872e2b169d29faf..bc54b3e207f11deb306f337eb358b8407b00abc3 100644
|
| --- a/src/ia32/builtins-ia32.cc
|
| +++ b/src/ia32/builtins-ia32.cc
|
| @@ -546,13 +546,6 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
| __ push(edi); // Callee's JS function.
|
| __ push(edx); // Callee's new target.
|
|
|
| - // Push dispatch table pointer.
|
| - __ mov(eax, Immediate(ExternalReference::interpreter_dispatch_table_address(
|
| - masm->isolate())));
|
| - __ push(eax);
|
| - // Push zero for bytecode array offset.
|
| - __ push(Immediate(0));
|
| -
|
| // Get the bytecode array from the function object and load the pointer to the
|
| // first entry into edi (InterpreterBytecodeRegister).
|
| __ mov(eax, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset));
|
| @@ -567,6 +560,11 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
| __ Assert(equal, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry);
|
| }
|
|
|
| + // Push bytecode array.
|
| + __ push(kInterpreterBytecodeArrayRegister);
|
| + // Push zero for bytecode array offset.
|
| + __ push(Immediate(0));
|
| +
|
| // Allocate the local and temporary register file on the stack.
|
| {
|
| // Load frame size from the BytecodeArray object.
|
| @@ -612,7 +610,8 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
| Immediate(InterpreterFrameConstants::kRegisterFilePointerFromFp));
|
| __ mov(kInterpreterBytecodeOffsetRegister,
|
| Immediate(BytecodeArray::kHeaderSize - kHeapObjectTag));
|
| - __ mov(ebx, Operand(ebp, InterpreterFrameConstants::kDispatchTableFromFp));
|
| + __ mov(ebx, Immediate(ExternalReference::interpreter_dispatch_table_address(
|
| + masm->isolate())));
|
|
|
| // Push dispatch table as a stack located parameter to the bytecode handler.
|
| DCHECK_EQ(-1, kInterpreterDispatchTableSpillSlot);
|
| @@ -752,11 +751,9 @@ static void Generate_EnterBytecodeDispatch(MacroAssembler* masm) {
|
| Immediate(InterpreterFrameConstants::kRegisterFilePointerFromFp));
|
|
|
| // Get the bytecode array pointer from the frame.
|
| - __ mov(ebx, Operand(kInterpreterRegisterFileRegister,
|
| - InterpreterFrameConstants::kFunctionFromRegisterPointer));
|
| - __ mov(ebx, FieldOperand(ebx, JSFunction::kSharedFunctionInfoOffset));
|
| __ mov(kInterpreterBytecodeArrayRegister,
|
| - FieldOperand(ebx, SharedFunctionInfo::kFunctionDataOffset));
|
| + Operand(kInterpreterRegisterFileRegister,
|
| + InterpreterFrameConstants::kBytecodeArrayFromRegisterPointer));
|
|
|
| if (FLAG_debug_code) {
|
| // Check function data field is actually a BytecodeArray object.
|
|
|