| Index: src/ppc/macro-assembler-ppc.cc
|
| diff --git a/src/ppc/macro-assembler-ppc.cc b/src/ppc/macro-assembler-ppc.cc
|
| index 8e55bc670221f254ff990cff19a28f7a8b84cba5..45c35961fd262eb77c19efa7899f97153464f4d5 100644
|
| --- a/src/ppc/macro-assembler-ppc.cc
|
| +++ b/src/ppc/macro-assembler-ppc.cc
|
| @@ -1089,7 +1089,10 @@ int MacroAssembler::LeaveFrame(StackFrame::Type type, int stack_adjustment) {
|
| // in the fp register (r31)
|
| // Then - we buy a new frame
|
|
|
| -void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space) {
|
| +void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space,
|
| + StackFrame::Type frame_type) {
|
| + DCHECK(frame_type == StackFrame::EXIT ||
|
| + frame_type == StackFrame::BUILTIN_EXIT);
|
| // Set up the frame structure on the stack.
|
| DCHECK_EQ(2 * kPointerSize, ExitFrameConstants::kCallerSPDisplacement);
|
| DCHECK_EQ(1 * kPointerSize, ExitFrameConstants::kCallerPCOffset);
|
| @@ -1100,7 +1103,7 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space) {
|
| // all of the pushes that have happened inside of V8
|
| // since we were called from C code
|
|
|
| - LoadSmiLiteral(ip, Smi::FromInt(StackFrame::EXIT));
|
| + LoadSmiLiteral(ip, Smi::FromInt(frame_type));
|
| PushCommonFrame(ip);
|
| // Reserve room for saved entry sp and code object.
|
| subi(sp, fp, Operand(ExitFrameConstants::kFixedFrameSizeFromFp));
|
| @@ -2754,9 +2757,11 @@ void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid) {
|
| }
|
|
|
|
|
| -void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin) {
|
| +void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin,
|
| + bool builtin_exit_frame) {
|
| mov(r4, Operand(builtin));
|
| - CEntryStub stub(isolate(), 1);
|
| + CEntryStub stub(isolate(), 1, kDontSaveFPRegs, kArgvOnStack,
|
| + builtin_exit_frame);
|
| Jump(stub.GetCode(), RelocInfo::CODE_TARGET);
|
| }
|
|
|
|
|