Index: src/api.h |
diff --git a/src/api.h b/src/api.h |
index 556765264ae4b1ba6989aba0ef7f3d3aeb4d42f6..21f6dacc872179e236ee031747299df4b8ac1f8d 100644 |
--- a/src/api.h |
+++ b/src/api.h |
@@ -434,6 +434,14 @@ class DeferredHandles { |
}; |
+// Microtasks invocation policy. Keep in sync with v8::Isolate::MicrotasksPolicy |
+enum MicrotasksPolicy { |
jochen (gone - plz use gerrit)
2016/03/01 14:26:08
why not just use the public version?
dgozman
2016/03/03 01:22:06
Done.
|
+ kExplicitMicrotasksInvocation, |
+ kScopedMicrotasksInvocation, |
+ kAutoMicrotasksInvocation |
+}; |
+ |
+ |
// This class is here in order to be able to declare it a friend of |
// HandleScope. Moving these methods to be members of HandleScope would be |
// neat in some ways, but it would expose internal implementation details in |
@@ -452,6 +460,12 @@ class HandleScopeImplementer { |
saved_contexts_(0), |
spare_(NULL), |
call_depth_(0), |
+ microtasks_suppression_(0), |
+#ifdef V8_ENABLE_CHECKS |
+ debug_call_depth_(0), |
+#endif |
+ internal_call_depth_(0), |
+ microtasks_policy_(kAutoMicrotasksInvocation), |
last_handle_before_deferred_block_(NULL) { } |
~HandleScopeImplementer() { |
@@ -474,7 +488,24 @@ class HandleScopeImplementer { |
inline void IncrementCallDepth() {call_depth_++;} |
adamk
2016/03/01 19:10:34
Given the below new types of "call depth", I think
|
inline void DecrementCallDepth() {call_depth_--;} |
- inline bool CallDepthIsZero() { return call_depth_ == 0; } |
+ inline int GetCallDepth() { return call_depth_; } |
+ |
+ inline void IncrementMicrotasksSuppression() {microtasks_suppression_++;} |
adamk
2016/03/01 19:10:34
This could use a comment, what is this counter for
|
+ inline void DecrementMicrotasksSuppression() {microtasks_suppression_--;} |
+ inline bool GetMicrotasksSuppression() { return microtasks_suppression_; } |
+ |
+#ifdef V8_ENABLE_CHECKS |
+ inline void IncrementDebugCallDepth() {debug_call_depth_++;} |
adamk
2016/03/01 19:10:34
Please add comments, what's a "debug call depth"?
|
+ inline void DecrementDebugCallDepth() {debug_call_depth_--;} |
+ inline bool GetDebugCallDepth() { return debug_call_depth_; } |
+#endif |
+ |
+ inline void IncrementInternalCallDepth() {internal_call_depth_++;} |
adamk
2016/03/01 19:10:34
Same here, what's an "internal call depth"?
|
+ inline void DecrementInternalCallDepth() {internal_call_depth_--;} |
+ inline bool GetInternalCallDepth() { return internal_call_depth_; } |
+ |
+ inline void set_microtasks_policy(MicrotasksPolicy policy); |
+ inline MicrotasksPolicy microtasks_policy() const; |
inline void EnterContext(Handle<Context> context); |
inline void LeaveContext(); |
@@ -532,6 +563,12 @@ class HandleScopeImplementer { |
List<Context*> saved_contexts_; |
Object** spare_; |
int call_depth_; |
+ int microtasks_suppression_; |
+#ifdef V8_ENABLE_CHECKS |
+ int debug_call_depth_; |
+#endif |
+ int internal_call_depth_; |
+ MicrotasksPolicy microtasks_policy_; |
Object** last_handle_before_deferred_block_; |
// This is only used for threading support. |
HandleScopeData handle_scope_data_; |
@@ -550,6 +587,16 @@ class HandleScopeImplementer { |
const int kHandleBlockSize = v8::internal::KB - 2; // fit in one page |
+void HandleScopeImplementer::set_microtasks_policy(MicrotasksPolicy policy) { |
+ microtasks_policy_ = policy; |
+} |
+ |
+ |
+MicrotasksPolicy HandleScopeImplementer::microtasks_policy() const { |
+ return microtasks_policy_; |
+} |
+ |
+ |
void HandleScopeImplementer::SaveContext(Context* context) { |
saved_contexts_.Add(context); |
} |