| Index: src/a64/builtins-a64.cc
|
| diff --git a/src/a64/builtins-a64.cc b/src/a64/builtins-a64.cc
|
| index df7fb7b07ca80cc2aef3c3f5b20a250919256c68..a2ba96080c8fe1a12aa567d18f9a4eb82e9ad3dd 100644
|
| --- a/src/a64/builtins-a64.cc
|
| +++ b/src/a64/builtins-a64.cc
|
| @@ -885,25 +885,6 @@ void Builtins::Generate_NotifySoftDeoptimized(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.
|
| - //
|
| - // TODO(jochen): Is it correct (and appropriate) to use safepoint
|
| - // registers here? According to the comment above, we should only need to
|
| - // preserve the registers with parameters.
|
| - __ PushXRegList(kSafepointSavedRegisters);
|
| - {
|
| - FrameScope scope(masm, StackFrame::INTERNAL);
|
| - __ CallRuntime(Runtime::kNotifyOSR, 0);
|
| - }
|
| - __ PopXRegList(kSafepointSavedRegisters);
|
| - __ Ret();
|
| -}
|
| -
|
| -
|
| void Builtins::Generate_OnStackReplacement(MacroAssembler* masm) {
|
| // Lookup the function in the JavaScript frame.
|
| __ Ldr(x0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
|
| @@ -948,6 +929,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;
|
| + __ CompareRoot(jssp, Heap::kStackLimitRootIndex);
|
| + __ B(hs, &ok);
|
| + {
|
| + 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) {
|
| Register receiver_type = x13;
|
|
|
|
|