| Index: src/execution.cc
|
| diff --git a/src/execution.cc b/src/execution.cc
|
| index a9f72b33a0c6e2ced9cfcd00900c6cbafe096375..da2d880a4941ee88a8521530b5223dda3a1be395 100644
|
| --- a/src/execution.cc
|
| +++ b/src/execution.cc
|
| @@ -502,6 +502,19 @@ void StackGuard::FullDeopt() {
|
| }
|
|
|
|
|
| +bool StackGuard::IsDeoptMarkedCode() {
|
| + ExecutionAccess access(isolate_);
|
| + return (thread_local_.interrupt_flags_ & DEOPT_MARKED_CODE) != 0;
|
| +}
|
| +
|
| +
|
| +void StackGuard::DeoptMarkedCode() {
|
| + ExecutionAccess access(isolate_);
|
| + thread_local_.interrupt_flags_ |= DEOPT_MARKED_CODE;
|
| + set_interrupt_limits(access);
|
| +}
|
| +
|
| +
|
| #ifdef ENABLE_DEBUGGER_SUPPORT
|
| bool StackGuard::IsDebugBreak() {
|
| ExecutionAccess access(isolate_);
|
| @@ -1013,6 +1026,10 @@ MaybeObject* Execution::HandleStackGuardInterrupt(Isolate* isolate) {
|
| stack_guard->Continue(FULL_DEOPT);
|
| Deoptimizer::DeoptimizeAll(isolate);
|
| }
|
| + if (stack_guard->IsDeoptMarkedCode()) {
|
| + stack_guard->Continue(DEOPT_MARKED_CODE);
|
| + Deoptimizer::DeoptimizeMarkedCode(isolate);
|
| + }
|
| if (stack_guard->IsInstallCodeRequest()) {
|
| ASSERT(isolate->concurrent_recompilation_enabled());
|
| stack_guard->Continue(INSTALL_CODE);
|
|
|