diff --git a/src/node_contextify.cc b/src/node_contextify.cc index ef88707b8982ec..23895382b33c86 100644 --- a/src/node_contextify.cc +++ b/src/node_contextify.cc @@ -210,7 +210,8 @@ MaybeLocal ContextifyContext::CreateV8Context( return MaybeLocal(); } - ctx->SetSecurityToken(env->context()->GetSecurityToken()); + Local context = env->context(); + ctx->SetSecurityToken(context->GetSecurityToken()); // We need to tie the lifetime of the sandbox object with the lifetime of // newly created context. We do this by making them hold references to each @@ -219,7 +220,7 @@ MaybeLocal ContextifyContext::CreateV8Context( // directly in an Object, we instead hold onto the new context's global // object instead (which then has a reference to the context). ctx->SetEmbedderData(ContextEmbedderIndex::kSandboxObject, sandbox_obj); - sandbox_obj->SetPrivate(env->context(), + sandbox_obj->SetPrivate(context, env->contextify_global_private_symbol(), ctx->Global()); @@ -394,16 +395,17 @@ void ContextifyContext::PropertySetterCallback( if (ctx->context_.IsEmpty()) return; + Local context = ctx->context(); auto attributes = PropertyAttribute::None; bool is_declared_on_global_proxy = ctx->global_proxy() - ->GetRealNamedPropertyAttributes(ctx->context(), property) + ->GetRealNamedPropertyAttributes(context, property) .To(&attributes); bool read_only = static_cast(attributes) & static_cast(PropertyAttribute::ReadOnly); bool is_declared_on_sandbox = ctx->sandbox() - ->GetRealNamedPropertyAttributes(ctx->context(), property) + ->GetRealNamedPropertyAttributes(context, property) .To(&attributes); read_only = read_only || (static_cast(attributes) & @@ -441,7 +443,7 @@ void ContextifyContext::PropertySetterCallback( args.GetReturnValue().Set(false); } - USE(ctx->sandbox()->Set(ctx->context(), property, value)); + USE(ctx->sandbox()->Set(context, property, value)); } // static @@ -482,7 +484,7 @@ void ContextifyContext::PropertyDefinerCallback( auto attributes = PropertyAttribute::None; bool is_declared = - ctx->global_proxy()->GetRealNamedPropertyAttributes(ctx->context(), + ctx->global_proxy()->GetRealNamedPropertyAttributes(context, property) .To(&attributes); bool read_only = @@ -656,8 +658,10 @@ void ContextifyScript::Init(Environment* env, Local target) { env->SetProtoMethod(script_tmpl, "runInContext", RunInContext); env->SetProtoMethod(script_tmpl, "runInThisContext", RunInThisContext); - target->Set(env->context(), class_name, - script_tmpl->GetFunction(env->context()).ToLocalChecked()).Check(); + Local context = env->context(); + + target->Set(context, class_name, + script_tmpl->GetFunction(context).ToLocalChecked()).Check(); env->set_script_context_constructor_template(script_tmpl); } @@ -775,9 +779,10 @@ void ContextifyScript::New(const FunctionCallbackInfo& args) { } contextify_script->script_.Reset(isolate, v8_script.ToLocalChecked()); + Local env_context = env->context(); if (compile_options == ScriptCompiler::kConsumeCodeCache) { args.This()->Set( - env->context(), + env_context, env->cached_data_rejected_string(), Boolean::New(isolate, source.GetCachedData()->rejected)).Check(); } else if (produce_cached_data) { @@ -789,12 +794,12 @@ void ContextifyScript::New(const FunctionCallbackInfo& args) { env, reinterpret_cast(cached_data->data), cached_data->length); - args.This()->Set(env->context(), + args.This()->Set(env_context, env->cached_data_string(), buf.ToLocalChecked()).Check(); } args.This()->Set( - env->context(), + env_context, env->cached_data_produced_string(), Boolean::New(isolate, cached_data_produced)).Check(); } @@ -884,7 +889,8 @@ void ContextifyScript::RunInContext(const FunctionCallbackInfo& args) { ContextifyContext::ContextFromContextifiedSandbox(env, sandbox); CHECK_NOT_NULL(contextify_context); - if (contextify_context->context().IsEmpty()) + Local context = contextify_context->context(); + if (context.IsEmpty()) return; TRACE_EVENT_NESTABLE_ASYNC_BEGIN0( @@ -903,7 +909,7 @@ void ContextifyScript::RunInContext(const FunctionCallbackInfo& args) { bool break_on_first_line = args[4]->IsTrue(); // Do the eval within the context - Context::Scope context_scope(contextify_context->context()); + Context::Scope context_scope(context); EvalMachine(contextify_context->env(), timeout, display_errors,