diff options
Diffstat (limited to 'deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc')
-rw-r--r-- | deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc b/deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc index 7654dc965f..cfdd6c9ef1 100644 --- a/deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc +++ b/deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc @@ -129,6 +129,12 @@ void Deoptimizer::GenerateDeoptimizationEntries(MacroAssembler* masm, __ popq(Operand(rbx, dst_offset)); } + // Mark the stack as not iterable for the CPU profiler which won't be able to + // walk the stack without the return address. + __ movb(__ ExternalReferenceAsOperand( + ExternalReference::stack_is_iterable_address(isolate)), + Immediate(0)); + // Remove the return address from the stack. __ addq(rsp, Immediate(kPCOnStackSize)); @@ -218,6 +224,10 @@ void Deoptimizer::GenerateDeoptimizationEntries(MacroAssembler* masm, __ popq(r); } + __ movb(__ ExternalReferenceAsOperand( + ExternalReference::stack_is_iterable_address(isolate)), + Immediate(1)); + // Return to the continuation point. __ ret(0); } |