summaryrefslogtreecommitdiff
path: root/deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc')
-rw-r--r--deps/v8/src/deoptimizer/x64/deoptimizer-x64.cc10
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);
}