Index: src/ppc/code-stubs-ppc.cc |
diff --git a/src/ppc/code-stubs-ppc.cc b/src/ppc/code-stubs-ppc.cc |
index 59aa8b182a8b6355188759f5f6c5eb649aa3b34e..150681adafeb6a7f90ab546545b28016b7f9e40a 100644 |
--- a/src/ppc/code-stubs-ppc.cc |
+++ b/src/ppc/code-stubs-ppc.cc |
@@ -741,7 +741,7 @@ void StoreBufferOverflowStub::Generate(MacroAssembler* masm) { |
__ mflr(r0); |
__ MultiPush(kJSCallerSaved | r0.bit()); |
if (save_doubles()) { |
- __ SaveFPRegs(sp, 0, DoubleRegister::kNumVolatileRegisters); |
+ __ MultiPushDoubles(kCallerSavedDoubles); |
} |
const int argument_count = 1; |
const int fp_argument_count = 0; |
@@ -753,7 +753,7 @@ void StoreBufferOverflowStub::Generate(MacroAssembler* masm) { |
__ CallCFunction(ExternalReference::store_buffer_overflow_function(isolate()), |
argument_count); |
if (save_doubles()) { |
- __ RestoreFPRegs(sp, 0, DoubleRegister::kNumVolatileRegisters); |
+ __ MultiPopDoubles(kCallerSavedDoubles); |
} |
__ MultiPop(kJSCallerSaved | r0.bit()); |
__ mtlr(r0); |
@@ -1226,11 +1226,10 @@ void JSEntryStub::Generate(MacroAssembler* masm) { |
// Save callee saved registers on the stack. |
__ MultiPush(kCalleeSaved); |
- // Floating point regs FPR0 - FRP13 are volatile |
- // FPR14-FPR31 are non-volatile, but sub-calls will save them for us |
- |
- // int offset_to_argv = kPointerSize * 22; // matches (22*4) above |
- // __ lwz(r7, MemOperand(sp, offset_to_argv)); |
+ // Save callee-saved double registers. |
+ __ MultiPushDoubles(kCalleeSavedDoubles); |
+ // Set up the reserved register for 0.0. |
+ __ LoadDoubleLiteral(kDoubleRegZero, 0.0, r0); |
// Push a frame with special values setup to mark it as an entry frame. |
// r3: code entry |
@@ -1352,20 +1351,16 @@ void JSEntryStub::Generate(MacroAssembler* masm) { |
// Reset the stack to the callee saved registers. |
__ addi(sp, sp, Operand(-EntryFrameConstants::kCallerFPOffset)); |
-// Restore callee-saved registers and return. |
-#ifdef DEBUG |
- if (FLAG_debug_code) { |
- Label here; |
- __ b(&here, SetLK); |
- __ bind(&here); |
- } |
-#endif |
+ // Restore callee-saved double registers. |
+ __ MultiPopDoubles(kCalleeSavedDoubles); |
+ // Restore callee-saved registers. |
__ MultiPop(kCalleeSaved); |
+ // Return |
__ LoadP(r0, MemOperand(sp, kStackFrameLRSlot * kPointerSize)); |
- __ mtctr(r0); |
- __ bctr(); |
+ __ mtlr(r0); |
+ __ blr(); |
} |