Index: src/execution.cc |
diff --git a/src/execution.cc b/src/execution.cc |
index 1f019820b84e9da391ed1d7d80fc6770067f36bc..443d4b8d0f2af0df6652372baf52494f5b500131 100644 |
--- a/src/execution.cc |
+++ b/src/execution.cc |
@@ -376,6 +376,12 @@ void StackGuard::DisableInterrupts() { |
} |
+bool StackGuard::ShouldPostponeInterrupts() { |
+ ExecutionAccess access(isolate_); |
+ return should_postpone_interrupts(access); |
+} |
+ |
+ |
bool StackGuard::IsInterrupted() { |
ExecutionAccess access(isolate_); |
return (thread_local_.interrupt_flags_ & INTERRUPT) != 0; |
@@ -874,6 +880,9 @@ void Execution::ProcessDebugMessages(bool debug_command_only) { |
MaybeObject* Execution::HandleStackGuardInterrupt(Isolate* isolate) { |
StackGuard* stack_guard = isolate->stack_guard(); |
+ if (stack_guard->ShouldPostponeInterrupts()) { |
+ return isolate->heap()->undefined_value(); |
+ } |
if (stack_guard->IsGCRequest()) { |
isolate->heap()->CollectAllGarbage(false, "StackGuard GC request"); |