Index: src/ppc/builtins-ppc.cc |
diff --git a/src/ppc/builtins-ppc.cc b/src/ppc/builtins-ppc.cc |
index 6d193dbe144456f9776d83f99ab5a21a88335c85..4ede21e0bc452eb005433bbc82510cf713e9e737 100644 |
--- a/src/ppc/builtins-ppc.cc |
+++ b/src/ppc/builtins-ppc.cc |
@@ -784,6 +784,7 @@ void Builtins::Generate_JSConstructEntryTrampoline(MacroAssembler* masm) { |
// |
// The live registers are: |
// o r4: the JS function object being called. |
+// o r6: the new target |
// o cp: our context |
// o pp: the caller's constant pool pointer (if enabled) |
// o fp: the caller's frame pointer |
@@ -801,6 +802,7 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) { |
FrameScope frame_scope(masm, StackFrame::MANUAL); |
__ PushFixedFrame(r4); |
__ addi(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp)); |
+ __ push(r6); |
// Get the bytecode array from the function object and load the pointer to the |
// first entry into kInterpreterBytecodeRegister. |
@@ -867,9 +869,9 @@ void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) { |
// Load accumulator, register file, bytecode offset, dispatch table into |
// registers. |
__ LoadRoot(kInterpreterAccumulatorRegister, Heap::kUndefinedValueRootIndex); |
- __ subi( |
- kInterpreterRegisterFileRegister, fp, |
- Operand(kPointerSize + StandardFrameConstants::kFixedFrameSizeFromFp)); |
+ __ subi(kInterpreterRegisterFileRegister, fp, |
+ Operand(2 * kPointerSize + |
+ StandardFrameConstants::kFixedFrameSizeFromFp)); |
__ mov(kInterpreterBytecodeOffsetRegister, |
Operand(BytecodeArray::kHeaderSize - kHeapObjectTag)); |
__ LoadRoot(kInterpreterDispatchTableRegister, |