Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Unified Diff: src/execution.h

Issue 362493002: Revert "Add mechanism to postpone interrupts selectively." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/execution.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/execution.h
diff --git a/src/execution.h b/src/execution.h
index 8d7b69362d9ec8dc1fdb7becae6999d16a5a4140..81fbbb8de5a740f9ff0e34e137f213fd4f9d6664 100644
--- a/src/execution.h
+++ b/src/execution.h
@@ -122,7 +122,6 @@ class Execution V8_FINAL : public AllStatic {
class ExecutionAccess;
-class PostponeInterruptsScope;
// StackGuard contains the handling of the limits that are used to limit the
@@ -146,32 +145,22 @@ class StackGuard V8_FINAL {
// it has been set up.
void ClearThread(const ExecutionAccess& lock);
-#define INTERRUPT_LIST(V) \
- V(DEBUGBREAK, DebugBreak, 0) \
- V(DEBUGCOMMAND, DebugCommand, 1) \
- V(TERMINATE_EXECUTION, TerminateExecution, 2) \
- V(GC_REQUEST, GC, 3) \
- V(INSTALL_CODE, InstallCode, 4) \
- V(API_INTERRUPT, ApiInterrupt, 5) \
- V(DEOPT_MARKED_ALLOCATION_SITES, DeoptMarkedAllocationSites, 6)
-
-#define V(NAME, Name, id) \
- inline bool Check##Name() { return CheckInterrupt(NAME); } \
- inline void Request##Name() { RequestInterrupt(NAME); } \
- inline void Clear##Name() { ClearInterrupt(NAME); }
+#define INTERRUPT_LIST(V) \
+ V(DEBUGBREAK, DebugBreak) \
+ V(DEBUGCOMMAND, DebugCommand) \
+ V(TERMINATE_EXECUTION, TerminateExecution) \
+ V(GC_REQUEST, GC) \
+ V(INSTALL_CODE, InstallCode) \
+ V(API_INTERRUPT, ApiInterrupt) \
+ V(DEOPT_MARKED_ALLOCATION_SITES, DeoptMarkedAllocationSites)
+
+#define V(NAME, Name) \
+ inline bool Check##Name() { return CheckInterrupt(1 << NAME); } \
+ inline void Request##Name() { RequestInterrupt(1 << NAME); } \
+ inline void Clear##Name() { ClearInterrupt(1 << NAME); }
INTERRUPT_LIST(V)
#undef V
- // Flag used to set the interrupt causes.
- enum InterruptFlag {
- #define V(NAME, Name, id) NAME = (1 << id),
- INTERRUPT_LIST(V)
- #undef V
- #define V(NAME, Name, id) NAME |
- ALL_INTERRUPTS = INTERRUPT_LIST(V) 0
- #undef V
- };
-
// This provides an asynchronous read of the stack limits for the current
// thread. There are no locks protecting this, but it is assumed that you
// have the global V8 lock if you are using multiple V8 threads.
@@ -201,17 +190,33 @@ class StackGuard V8_FINAL {
private:
StackGuard();
- bool CheckInterrupt(InterruptFlag flag);
- void RequestInterrupt(InterruptFlag flag);
- void ClearInterrupt(InterruptFlag flag);
+// Flag used to set the interrupt causes.
+enum InterruptFlag {
+#define V(NAME, Name) NAME,
+ INTERRUPT_LIST(V)
+#undef V
+ NUMBER_OF_INTERRUPTS
+};
+
+ bool CheckInterrupt(int flagbit);
+ void RequestInterrupt(int flagbit);
+ void ClearInterrupt(int flagbit);
bool CheckAndClearInterrupt(InterruptFlag flag);
// You should hold the ExecutionAccess lock when calling this method.
bool has_pending_interrupts(const ExecutionAccess& lock) {
+ // Sanity check: We shouldn't be asking about pending interrupts
+ // unless we're not postponing them anymore.
+ ASSERT(!should_postpone_interrupts(lock));
return thread_local_.interrupt_flags_ != 0;
}
// You should hold the ExecutionAccess lock when calling this method.
+ bool should_postpone_interrupts(const ExecutionAccess& lock) {
+ return thread_local_.postpone_interrupts_nesting_ > 0;
+ }
+
+ // You should hold the ExecutionAccess lock when calling this method.
inline void set_interrupt_limits(const ExecutionAccess& lock);
// Reset limits to actual values. For example after handling interrupt.
@@ -230,9 +235,6 @@ class StackGuard V8_FINAL {
static const uintptr_t kIllegalLimit = 0xfffffff8;
#endif
- void PushPostponeInterruptsScope(PostponeInterruptsScope* scope);
- void PopPostponeInterruptsScope();
-
class ThreadLocal V8_FINAL {
public:
ThreadLocal() { Clear(); }
@@ -257,7 +259,8 @@ class StackGuard V8_FINAL {
uintptr_t real_climit_; // Actual C++ stack limit set for the VM.
uintptr_t climit_;
- PostponeInterruptsScope* postpone_interrupts_;
+ int nesting_;
+ int postpone_interrupts_nesting_;
int interrupt_flags_;
};
« no previous file with comments | « no previous file | src/execution.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698