| Index: src/x64/builtins-x64.cc
|
| diff --git a/src/x64/builtins-x64.cc b/src/x64/builtins-x64.cc
|
| index 1a6ee7cda1e836d9b9a5fe465f9edb43080bd339..39dceeef521371046574ddc9c80e3f0ca1038852 100644
|
| --- a/src/x64/builtins-x64.cc
|
| +++ b/src/x64/builtins-x64.cc
|
| @@ -593,6 +593,10 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
| __ Push(rdi); // Callee's JS function.
|
| __ Push(rdx); // Callee's new target.
|
|
|
| + // Push zero for bytecode array offset.
|
| + __ movp(rax, Immediate(0));
|
| + __ Push(rax);
|
| +
|
| // Get the bytecode array from the function object and load the pointer to the
|
| // first entry into edi (InterpreterBytecodeRegister).
|
| __ movp(rax, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset));
|
| @@ -623,10 +627,10 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
| __ bind(&ok);
|
|
|
| // If ok, push undefined as the initial value for all register file entries.
|
| + // (plus one for the accumulator save slot).
|
| Label loop_header;
|
| Label loop_check;
|
| __ LoadRoot(rdx, Heap::kUndefinedValueRootIndex);
|
| - __ j(always, &loop_check);
|
| __ bind(&loop_header);
|
| // TODO(rmcilroy): Consider doing more than one push per loop iteration.
|
| __ Push(rdx);
|
| @@ -658,9 +662,8 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) {
|
| // registers.
|
| __ LoadRoot(kInterpreterAccumulatorRegister, Heap::kUndefinedValueRootIndex);
|
| __ movp(kInterpreterRegisterFileRegister, rbp);
|
| - __ subp(kInterpreterRegisterFileRegister,
|
| - Immediate(2 * kPointerSize +
|
| - StandardFrameConstants::kFixedFrameSizeFromFp));
|
| + __ addp(kInterpreterRegisterFileRegister,
|
| + Immediate(InterpreterFrameConstants::kRegisterFilePointerFromFp));
|
| __ movp(kInterpreterBytecodeOffsetRegister,
|
| Immediate(BytecodeArray::kHeaderSize - kHeapObjectTag));
|
| __ LoadRoot(kInterpreterDispatchTableRegister,
|
|
|