Index: src/s390/builtins-s390.cc |
diff --git a/src/s390/builtins-s390.cc b/src/s390/builtins-s390.cc |
index 2d521db65e3fb6ef4dce1e0633884c4ff8c71a5c..a085140b5f2553ddb5b0f37b394ea08e6024b06a 100644 |
--- a/src/s390/builtins-s390.cc |
+++ b/src/s390/builtins-s390.cc |
@@ -1013,9 +1013,13 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) { |
__ Assert(eq, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry); |
} |
- // Push new.target, bytecode array and zero for bytecode array offset. |
- __ LoadImmP(r2, Operand::Zero()); |
- __ Push(r5, kInterpreterBytecodeArrayRegister, r2); |
+ // Load the initial bytecode offset. |
+ __ mov(kInterpreterBytecodeOffsetRegister, |
+ Operand(BytecodeArray::kHeaderSize - kHeapObjectTag)); |
+ |
+ // Push new.target, bytecode array and Smi tagged bytecode array offset. |
+ __ SmiTag(r4, kInterpreterBytecodeOffsetRegister); |
+ __ Push(r5, kInterpreterBytecodeArrayRegister, r4); |
// Allocate the local and temporary register file on the stack. |
{ |
@@ -1047,12 +1051,8 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) { |
__ bind(&no_args); |
} |
- // Load accumulator, register file, bytecode offset, dispatch table into |
- // registers. |
+ // Load accumulator and dispatch table into registers. |
__ LoadRoot(kInterpreterAccumulatorRegister, Heap::kUndefinedValueRootIndex); |
- __ AddP(r4, fp, Operand(InterpreterFrameConstants::kRegisterFileFromFp)); |
- __ mov(kInterpreterBytecodeOffsetRegister, |
- Operand(BytecodeArray::kHeaderSize - kHeapObjectTag)); |
__ mov(kInterpreterDispatchTableRegister, |
Operand(ExternalReference::interpreter_dispatch_table_address( |
masm->isolate()))); |