| Index: src/mips/builtins-mips.cc
|
| diff --git a/src/mips/builtins-mips.cc b/src/mips/builtins-mips.cc
|
| index e528dd7d0eb479751589a206efb4e332ede1d646..ed7764bf35f6413f6f9fe07ca882229a23027054 100644
|
| --- a/src/mips/builtins-mips.cc
|
| +++ b/src/mips/builtins-mips.cc
|
| @@ -924,23 +924,6 @@ void Builtins::Generate_NotifyLazyDeoptimized(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| -void Builtins::Generate_NotifyOSR(MacroAssembler* masm) {
|
| - // For now, we are relying on the fact that Runtime::NotifyOSR
|
| - // doesn't do any garbage collection which allows us to save/restore
|
| - // the registers without worrying about which of them contain
|
| - // pointers. This seems a bit fragile.
|
| - RegList saved_regs =
|
| - (kJSCallerSaved | kCalleeSaved | ra.bit() | fp.bit()) & ~sp.bit();
|
| - __ MultiPush(saved_regs);
|
| - {
|
| - FrameScope scope(masm, StackFrame::INTERNAL);
|
| - __ CallRuntime(Runtime::kNotifyOSR, 0);
|
| - }
|
| - __ MultiPop(saved_regs);
|
| - __ Ret();
|
| -}
|
| -
|
| -
|
| void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
| // Lookup the function in the JavaScript frame.
|
| __ lw(a0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
|
| @@ -983,6 +966,23 @@ void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| +void Builtins::Generate_OsrAfterStackCheck(MacroAssembler* masm) {
|
| + // We check the stack limit as indicator that recompilation might be done.
|
| + Label ok;
|
| + __ LoadRoot(at, Heap::kStackLimitRootIndex);
|
| + __ Branch(&ok, hs, sp, Operand(at));
|
| + {
|
| + FrameScope scope(masm, StackFrame::INTERNAL);
|
| + __ CallRuntime(Runtime::kStackGuard, 0);
|
| + }
|
| + __ Jump(masm->isolate()->builtins()->OnStackReplacement(),
|
| + RelocInfo::CODE_TARGET);
|
| +
|
| + __ bind(&ok);
|
| + __ Ret();
|
| +}
|
| +
|
| +
|
| void Builtins::Generate_FunctionCall(MacroAssembler* masm) {
|
| // 1. Make sure we have at least one argument.
|
| // a0: actual number of arguments
|
|
|