| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 02c36ffa11f72a23434e76b0315560830c93407c..a29d294fafd6ca7fbbd5b6d57b6ea5ba5b7f8e50 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -86,7 +86,7 @@ namespace v8 {
|
| return bailout_value; \
|
| } \
|
| HandleScopeClass handle_scope(isolate); \
|
| - CallDepthScope call_depth_scope(isolate, context, do_callback); \
|
| + CallDepthScope<do_callback> call_depth_scope(isolate, context); \
|
| LOG_API(isolate, class_name, function_name); \
|
| ENTER_V8(isolate); \
|
| bool has_pending_exception = false
|
| @@ -170,15 +170,11 @@ void CheckMicrotasksScopesConsistency(i::Isolate* isolate) {
|
| }
|
| #endif
|
|
|
| -
|
| +template <bool do_callback>
|
| class CallDepthScope {
|
| public:
|
| - explicit CallDepthScope(i::Isolate* isolate, Local<Context> context,
|
| - bool do_callback)
|
| - : isolate_(isolate),
|
| - context_(context),
|
| - escaped_(false),
|
| - do_callback_(do_callback) {
|
| + explicit CallDepthScope(i::Isolate* isolate, Local<Context> context)
|
| + : isolate_(isolate), context_(context), escaped_(false) {
|
| // TODO(dcarney): remove this when blink stops crashing.
|
| DCHECK(!isolate_->external_caught_exception());
|
| isolate_->IncrementJsCallsFromApiCounter();
|
| @@ -194,14 +190,14 @@ class CallDepthScope {
|
| context_->Enter();
|
| }
|
| }
|
| - if (do_callback_) isolate_->FireBeforeCallEnteredCallback();
|
| + if (do_callback) isolate_->FireBeforeCallEnteredCallback();
|
| }
|
| ~CallDepthScope() {
|
| if (!context_.IsEmpty()) context_->Exit();
|
| if (!escaped_) isolate_->handle_scope_implementer()->DecrementCallDepth();
|
| - if (do_callback_) isolate_->FireCallCompletedCallback();
|
| + if (do_callback) isolate_->FireCallCompletedCallback();
|
| #ifdef DEBUG
|
| - if (do_callback_) CheckMicrotasksScopesConsistency(isolate_);
|
| + if (do_callback) CheckMicrotasksScopesConsistency(isolate_);
|
| #endif
|
| }
|
|
|
| @@ -909,12 +905,9 @@ i::Object** EscapableHandleScope::Escape(i::Object** escape_value) {
|
| return escape_slot_;
|
| }
|
|
|
| -
|
| -SealHandleScope::SealHandleScope(Isolate* isolate) {
|
| - i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate);
|
| -
|
| - isolate_ = internal_isolate;
|
| - i::HandleScopeData* current = internal_isolate->handle_scope_data();
|
| +SealHandleScope::SealHandleScope(Isolate* isolate)
|
| + : isolate_(reinterpret_cast<i::Isolate*>(isolate)) {
|
| + i::HandleScopeData* current = isolate_->handle_scope_data();
|
| prev_limit_ = current->limit;
|
| current->limit = current->next;
|
| prev_sealed_level_ = current->sealed_level;
|
|
|