// Copyright 2019 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_EXECUTION_INTERRUPTS_SCOPE_H_ #define V8_EXECUTION_INTERRUPTS_SCOPE_H_ #include "src/execution/isolate.h" #include "src/execution/stack-guard.h" namespace v8 { namespace internal { class Isolate; // Scope intercepts only interrupt which is part of its interrupt_mask and does // not affect other interrupts. class V8_NODISCARD InterruptsScope { … }; // Support for temporarily postponing interrupts. When the outermost // postpone scope is left the interrupts will be re-enabled and any // interrupts that occurred while in the scope will be taken into // account. class V8_NODISCARD PostponeInterruptsScope : public InterruptsScope { … }; // Support for overriding PostponeInterruptsScope. Interrupt is not ignored if // innermost scope is SafeForInterruptsScope ignoring any outer // PostponeInterruptsScopes. class V8_NODISCARD SafeForInterruptsScope : public InterruptsScope { … }; } // namespace internal } // namespace v8 #endif // V8_EXECUTION_INTERRUPTS_SCOPE_H_