From 76453f1878643bcad575d65f5ecfa2a8dce76860 Mon Sep 17 00:00:00 2001 From: Andreas Haas Date: Fri, 21 Sep 2018 13:13:35 +0200 Subject: [PATCH] src: replace deprecated uses of FunctionTemplate::GetFunction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/22993 Reviewed-By: Michaël Zasso Reviewed-By: Colin Ihrig Reviewed-By: Ujjwal Sharma Reviewed-By: Joyee Cheung Reviewed-By: Eugene Ostroukhov Reviewed-By: Anna Henningsen Reviewed-By: James M Snell --- doc/api/addons.md | 15 ++++++++----- src/cares_wrap.cc | 9 ++++---- src/env-inl.h | 16 ++++++++------ src/env.cc | 6 ++++-- src/fs_event_wrap.cc | 2 +- src/inspector_js_api.cc | 5 ++++- src/js_stream.cc | 2 +- src/module_wrap.cc | 3 ++- src/node.h | 3 ++- src/node_api.cc | 4 +++- src/node_contextify.cc | 6 ++++-- src/node_crypto.cc | 22 ++++++++++++-------- src/node_dtrace.cc | 4 +++- src/node_file.cc | 10 +++++++-- src/node_http2.cc | 4 ++-- src/node_http_parser.cc | 2 +- src/node_perf.cc | 2 +- src/node_stat_watcher.cc | 3 ++- src/node_trace_events.cc | 2 +- src/node_worker.cc | 2 +- src/node_zlib.cc | 2 +- src/pipe_wrap.cc | 8 ++++--- src/process_wrap.cc | 3 ++- src/signal_wrap.cc | 3 ++- src/stream_pipe.cc | 5 ++++- src/stream_wrap.cc | 5 +++-- src/tcp_wrap.cc | 8 ++++--- src/tls_wrap.cc | 5 +++-- src/tty_wrap.cc | 2 +- src/udp_wrap.cc | 8 ++++--- src/uv.cc | 4 +++- test/addons/heap-profiler/binding.cc | 5 ++++- test/addons/new-target/binding.cc | 5 ++++- test/addons/openssl-binding/binding.cc | 4 +++- test/addons/zlib-binding/binding.cc | 4 +++- test/cctest/test_node_postmortem_metadata.cc | 12 +++++++---- 36 files changed, 134 insertions(+), 71 deletions(-) diff --git a/doc/api/addons.md b/doc/api/addons.md index 5e06336a85a4a0..b2c52d5128b5bc 100644 --- a/doc/api/addons.md +++ b/doc/api/addons.md @@ -635,6 +635,7 @@ functions and returning those back to JavaScript: namespace demo { +using v8::Context; using v8::Function; using v8::FunctionCallbackInfo; using v8::FunctionTemplate; @@ -652,8 +653,9 @@ void MyFunction(const FunctionCallbackInfo& args) { void CreateFunction(const FunctionCallbackInfo& args) { Isolate* isolate = args.GetIsolate(); + Local context = isolate->GetCurrentContext(); Local tpl = FunctionTemplate::New(isolate, MyFunction); - Local fn = tpl->GetFunction(); + Local fn = tpl->GetFunction(context).ToLocalChecked(); // omit this to make it anonymous fn->SetName(String::NewFromUtf8(isolate, "theFunction")); @@ -777,9 +779,10 @@ void MyObject::Init(Local exports) { // Prototype NODE_SET_PROTOTYPE_METHOD(tpl, "plusOne", PlusOne); - constructor.Reset(isolate, tpl->GetFunction()); + Local context = isolate->GetCurrentContext(); + constructor.Reset(isolate, tpl->GetFunction(context).ToLocalChecked()); exports->Set(String::NewFromUtf8(isolate, "MyObject"), - tpl->GetFunction()); + tpl->GetFunction(context).ToLocalChecked()); } void MyObject::New(const FunctionCallbackInfo& args) { @@ -969,7 +972,8 @@ void MyObject::Init(Isolate* isolate) { // Prototype NODE_SET_PROTOTYPE_METHOD(tpl, "plusOne", PlusOne); - constructor.Reset(isolate, tpl->GetFunction()); + Local context = isolate->GetCurrentContext(); + constructor.Reset(isolate, tpl->GetFunction(context).ToLocalChecked()); } void MyObject::New(const FunctionCallbackInfo& args) { @@ -1177,7 +1181,8 @@ void MyObject::Init(Isolate* isolate) { tpl->SetClassName(String::NewFromUtf8(isolate, "MyObject")); tpl->InstanceTemplate()->SetInternalFieldCount(1); - constructor.Reset(isolate, tpl->GetFunction()); + Local context = isolate->GetCurrentContext(); + constructor.Reset(isolate, tpl->GetFunction(context).ToLocalChecked()); } void MyObject::New(const FunctionCallbackInfo& args) { diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc index a3de844d7ec97e..c3984ffdbce8f0 100644 --- a/src/cares_wrap.cc +++ b/src/cares_wrap.cc @@ -2224,7 +2224,7 @@ void Initialize(Local target, Local addrInfoWrapString = FIXED_ONE_BYTE_STRING(env->isolate(), "GetAddrInfoReqWrap"); aiw->SetClassName(addrInfoWrapString); - target->Set(addrInfoWrapString, aiw->GetFunction()); + target->Set(addrInfoWrapString, aiw->GetFunction(context).ToLocalChecked()); Local niw = BaseObject::MakeLazilyInitializedJSTemplate(env); @@ -2232,7 +2232,7 @@ void Initialize(Local target, Local nameInfoWrapString = FIXED_ONE_BYTE_STRING(env->isolate(), "GetNameInfoReqWrap"); niw->SetClassName(nameInfoWrapString); - target->Set(nameInfoWrapString, niw->GetFunction()); + target->Set(nameInfoWrapString, niw->GetFunction(context).ToLocalChecked()); Local qrw = BaseObject::MakeLazilyInitializedJSTemplate(env); @@ -2240,7 +2240,7 @@ void Initialize(Local target, Local queryWrapString = FIXED_ONE_BYTE_STRING(env->isolate(), "QueryReqWrap"); qrw->SetClassName(queryWrapString); - target->Set(queryWrapString, qrw->GetFunction()); + target->Set(queryWrapString, qrw->GetFunction(context).ToLocalChecked()); Local channel_wrap = env->NewFunctionTemplate(ChannelWrap::New); @@ -2267,7 +2267,8 @@ void Initialize(Local target, Local channelWrapString = FIXED_ONE_BYTE_STRING(env->isolate(), "ChannelWrap"); channel_wrap->SetClassName(channelWrapString); - target->Set(channelWrapString, channel_wrap->GetFunction()); + target->Set(channelWrapString, + channel_wrap->GetFunction(context).ToLocalChecked()); } } // anonymous namespace diff --git a/src/env-inl.h b/src/env-inl.h index 4e0a95ed424cd9..208cc5381c9008 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -710,13 +710,15 @@ inline v8::Local inline void Environment::SetMethod(v8::Local that, const char* name, v8::FunctionCallback callback) { + v8::Local context = isolate()->GetCurrentContext(); v8::Local function = - NewFunctionTemplate(callback, - v8::Local(), + NewFunctionTemplate(callback, v8::Local(), // TODO(TimothyGu): Investigate if SetMethod is ever // used for constructors. v8::ConstructorBehavior::kAllow, - v8::SideEffectType::kHasSideEffect)->GetFunction(); + v8::SideEffectType::kHasSideEffect) + ->GetFunction(context) + .ToLocalChecked(); // kInternalized strings are created in the old space. const v8::NewStringType type = v8::NewStringType::kInternalized; v8::Local name_string = @@ -728,13 +730,15 @@ inline void Environment::SetMethod(v8::Local that, inline void Environment::SetMethodNoSideEffect(v8::Local that, const char* name, v8::FunctionCallback callback) { + v8::Local context = isolate()->GetCurrentContext(); v8::Local function = - NewFunctionTemplate(callback, - v8::Local(), + NewFunctionTemplate(callback, v8::Local(), // TODO(TimothyGu): Investigate if SetMethod is ever // used for constructors. v8::ConstructorBehavior::kAllow, - v8::SideEffectType::kHasNoSideEffect)->GetFunction(); + v8::SideEffectType::kHasNoSideEffect) + ->GetFunction(context) + .ToLocalChecked(); // kInternalized strings are created in the old space. const v8::NewStringType type = v8::NewStringType::kInternalized; v8::Local name_string = diff --git a/src/env.cc b/src/env.cc index 7356f04db38c95..57c0be960f7784 100644 --- a/src/env.cc +++ b/src/env.cc @@ -230,8 +230,10 @@ void Environment::Start(const std::vector& args, auto process_template = FunctionTemplate::New(isolate()); process_template->SetClassName(FIXED_ONE_BYTE_STRING(isolate(), "process")); - auto process_object = - process_template->GetFunction()->NewInstance(context()).ToLocalChecked(); + auto process_object = process_template->GetFunction(context()) + .ToLocalChecked() + ->NewInstance(context()) + .ToLocalChecked(); set_process_object(process_object); SetupProcessObject(this, args, exec_args); diff --git a/src/fs_event_wrap.cc b/src/fs_event_wrap.cc index e0cdab4d3e20f1..1c054bbc413c0b 100644 --- a/src/fs_event_wrap.cc +++ b/src/fs_event_wrap.cc @@ -121,7 +121,7 @@ void FSEventWrap::Initialize(Local target, Local(), static_cast(ReadOnly | DontDelete | v8::DontEnum)); - target->Set(fsevent_string, t->GetFunction()); + target->Set(fsevent_string, t->GetFunction(context).ToLocalChecked()); } diff --git a/src/inspector_js_api.cc b/src/inspector_js_api.cc index 54b7c4d01c6d3b..52184111f5527a 100644 --- a/src/inspector_js_api.cc +++ b/src/inspector_js_api.cc @@ -310,7 +310,10 @@ void Initialize(Local target, Local unused, AsyncWrap::AddWrapMethods(env, tmpl); env->SetProtoMethod(tmpl, "dispatch", JSBindingsConnection::Dispatch); env->SetProtoMethod(tmpl, "disconnect", JSBindingsConnection::Disconnect); - target->Set(env->context(), conn_str, tmpl->GetFunction()).ToChecked(); + target + ->Set(env->context(), conn_str, + tmpl->GetFunction(env->context()).ToLocalChecked()) + .ToChecked(); } } // namespace diff --git a/src/js_stream.cc b/src/js_stream.cc index 4769a9c56d633f..fb530dde89bea5 100644 --- a/src/js_stream.cc +++ b/src/js_stream.cc @@ -211,7 +211,7 @@ void JSStream::Initialize(Local target, env->SetProtoMethod(t, "emitEOF", EmitEOF); StreamBase::AddMethods(env, t); - target->Set(jsStreamString, t->GetFunction()); + target->Set(jsStreamString, t->GetFunction(context).ToLocalChecked()); } } // namespace node diff --git a/src/module_wrap.cc b/src/module_wrap.cc index 5249ccb8dccd28..4b60b6b8e4bb0e 100644 --- a/src/module_wrap.cc +++ b/src/module_wrap.cc @@ -801,7 +801,8 @@ void ModuleWrap::Initialize(Local target, env->SetProtoMethodNoSideEffect(tpl, "getStaticDependencySpecifiers", GetStaticDependencySpecifiers); - target->Set(FIXED_ONE_BYTE_STRING(isolate, "ModuleWrap"), tpl->GetFunction()); + target->Set(FIXED_ONE_BYTE_STRING(isolate, "ModuleWrap"), + tpl->GetFunction(context).ToLocalChecked()); env->SetMethod(target, "resolve", Resolve); env->SetMethod(target, "setImportModuleDynamicallyCallback", diff --git a/src/node.h b/src/node.h index be0135125f6a30..3a3dba9fd23a7b 100644 --- a/src/node.h +++ b/src/node.h @@ -372,9 +372,10 @@ inline void NODE_SET_METHOD(v8::Local recv, v8::FunctionCallback callback) { v8::Isolate* isolate = v8::Isolate::GetCurrent(); v8::HandleScope handle_scope(isolate); + v8::Local context = isolate->GetCurrentContext(); v8::Local t = v8::FunctionTemplate::New(isolate, callback); - v8::Local fn = t->GetFunction(); + v8::Local fn = t->GetFunction(context).ToLocalChecked(); v8::Local fn_name = v8::String::NewFromUtf8(isolate, name, v8::NewStringType::kInternalized).ToLocalChecked(); fn->SetName(fn_name); diff --git a/src/node_api.cc b/src/node_api.cc index 3dd5b383310a03..83eef0ff2eea47 100644 --- a/src/node_api.cc +++ b/src/node_api.cc @@ -1518,7 +1518,9 @@ napi_status napi_define_class(napi_env env, } } - *result = v8impl::JsValueFromV8LocalValue(scope.Escape(tpl->GetFunction())); + v8::Local context = isolate->GetCurrentContext(); + *result = v8impl::JsValueFromV8LocalValue( + scope.Escape(tpl->GetFunction(context).ToLocalChecked())); if (static_property_count > 0) { std::vector static_descriptors; diff --git a/src/node_contextify.cc b/src/node_contextify.cc index f0c0b142f09cc1..e850b94e71cba9 100644 --- a/src/node_contextify.cc +++ b/src/node_contextify.cc @@ -202,7 +202,8 @@ void ContextifyContext::Init(Environment* env, Local target) { Local function_template = FunctionTemplate::New(env->isolate()); function_template->InstanceTemplate()->SetInternalFieldCount(1); - env->set_script_data_constructor_function(function_template->GetFunction()); + env->set_script_data_constructor_function( + function_template->GetFunction(env->context()).ToLocalChecked()); env->SetMethod(target, "makeContext", MakeContext); env->SetMethod(target, "isContext", IsContext); @@ -607,7 +608,8 @@ class ContextifyScript : public BaseObject { env->SetProtoMethod(script_tmpl, "runInContext", RunInContext); env->SetProtoMethod(script_tmpl, "runInThisContext", RunInThisContext); - target->Set(class_name, script_tmpl->GetFunction()); + target->Set(class_name, + script_tmpl->GetFunction(env->context()).ToLocalChecked()); env->set_script_context_constructor_template(script_tmpl); } diff --git a/src/node_crypto.cc b/src/node_crypto.cc index a2e6650e920132..1663fdb4e05656 100644 --- a/src/node_crypto.cc +++ b/src/node_crypto.cc @@ -366,7 +366,8 @@ void SecureContext::Initialize(Environment* env, Local target) { t->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "kTicketKeyIVIndex"), Integer::NewFromUnsigned(env->isolate(), kTicketKeyIVIndex)); - target->Set(secureContextString, t->GetFunction()); + target->Set(secureContextString, + t->GetFunction(env->context()).ToLocalChecked()); env->set_secure_context_constructor_template(t); } @@ -2555,7 +2556,7 @@ void CipherBase::Initialize(Environment* env, Local target) { env->SetProtoMethod(t, "setAAD", SetAAD); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "CipherBase"), - t->GetFunction()); + t->GetFunction(env->context()).ToLocalChecked()); } @@ -3201,7 +3202,8 @@ void Hmac::Initialize(Environment* env, v8::Local target) { env->SetProtoMethod(t, "update", HmacUpdate); env->SetProtoMethod(t, "digest", HmacDigest); - target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "Hmac"), t->GetFunction()); + target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "Hmac"), + t->GetFunction(env->context()).ToLocalChecked()); } @@ -3320,7 +3322,8 @@ void Hash::Initialize(Environment* env, v8::Local target) { env->SetProtoMethod(t, "update", HashUpdate); env->SetProtoMethod(t, "digest", HashDigest); - target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "Hash"), t->GetFunction()); + target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "Hash"), + t->GetFunction(env->context()).ToLocalChecked()); } @@ -3514,7 +3517,8 @@ void Sign::Initialize(Environment* env, v8::Local target) { env->SetProtoMethod(t, "update", SignUpdate); env->SetProtoMethod(t, "sign", SignFinal); - target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "Sign"), t->GetFunction()); + target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "Sign"), + t->GetFunction(env->context()).ToLocalChecked()); } @@ -3716,7 +3720,7 @@ void Verify::Initialize(Environment* env, v8::Local target) { env->SetProtoMethod(t, "verify", VerifyFinal); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "Verify"), - t->GetFunction()); + t->GetFunction(env->context()).ToLocalChecked()); } @@ -3954,7 +3958,7 @@ void DiffieHellman::Initialize(Environment* env, Local target) { attributes); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "DiffieHellman"), - t->GetFunction()); + t->GetFunction(env->context()).ToLocalChecked()); Local t2 = env->NewFunctionTemplate(DiffieHellmanGroup); t2->InstanceTemplate()->SetInternalFieldCount(1); @@ -3983,7 +3987,7 @@ void DiffieHellman::Initialize(Environment* env, Local target) { attributes); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "DiffieHellmanGroup"), - t2->GetFunction()); + t2->GetFunction(env->context()).ToLocalChecked()); } @@ -4332,7 +4336,7 @@ void ECDH::Initialize(Environment* env, Local target) { env->SetProtoMethod(t, "setPrivateKey", SetPrivateKey); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "ECDH"), - t->GetFunction()); + t->GetFunction(env->context()).ToLocalChecked()); } diff --git a/src/node_dtrace.cc b/src/node_dtrace.cc index 517d32064ea232..164a602fb62a09 100644 --- a/src/node_dtrace.cc +++ b/src/node_dtrace.cc @@ -276,7 +276,9 @@ void InitDTrace(Environment* env, Local target) { for (size_t i = 0; i < arraysize(tab); i++) { Local key = OneByteString(env->isolate(), tab[i].name); - Local val = env->NewFunctionTemplate(tab[i].func)->GetFunction(); + Local val = env->NewFunctionTemplate(tab[i].func) + ->GetFunction(env->context()) + .ToLocalChecked(); target->Set(key, val); } diff --git a/src/node_file.cc b/src/node_file.cc index 1243cfd8340b95..7de6d90ca99a3c 100644 --- a/src/node_file.cc +++ b/src/node_file.cc @@ -2096,7 +2096,10 @@ void Initialize(Local target, Local wrapString = FIXED_ONE_BYTE_STRING(env->isolate(), "FSReqWrap"); fst->SetClassName(wrapString); - target->Set(context, wrapString, fst->GetFunction()).FromJust(); + target + ->Set(context, wrapString, + fst->GetFunction(env->context()).ToLocalChecked()) + .FromJust(); // Create FunctionTemplate for FileHandleReadWrap. There’s no need // to do anything in the constructor, so we only store the instance template. @@ -2130,7 +2133,10 @@ void Initialize(Local target, FIXED_ONE_BYTE_STRING(env->isolate(), "FileHandle"); fd->SetClassName(handleString); StreamBase::AddMethods(env, fd); - target->Set(context, handleString, fd->GetFunction()).FromJust(); + target + ->Set(context, handleString, + fd->GetFunction(env->context()).ToLocalChecked()) + .FromJust(); env->set_fd_constructor_template(fdt); // Create FunctionTemplate for FileHandle::CloseReq diff --git a/src/node_http2.cc b/src/node_http2.cc index 36733fcf6b4d50..d1c2362613a57a 100644 --- a/src/node_http2.cc +++ b/src/node_http2.cc @@ -2987,7 +2987,7 @@ void Initialize(Local target, env->set_http2stream_constructor_template(streamt); target->Set(context, FIXED_ONE_BYTE_STRING(env->isolate(), "Http2Stream"), - stream->GetFunction()).FromJust(); + stream->GetFunction(env->context()).ToLocalChecked()).FromJust(); Local session = env->NewFunctionTemplate(Http2Session::New); @@ -3015,7 +3015,7 @@ void Initialize(Local target, Http2Session::RefreshSettings); target->Set(context, http2SessionClassName, - session->GetFunction()).FromJust(); + session->GetFunction(env->context()).ToLocalChecked()).FromJust(); Local constants = Object::New(isolate); Local name_for_error_code = Array::New(isolate); diff --git a/src/node_http_parser.cc b/src/node_http_parser.cc index a4b92cbb20bfd1..ee6a4c4b45ad7d 100644 --- a/src/node_http_parser.cc +++ b/src/node_http_parser.cc @@ -776,7 +776,7 @@ void Initialize(Local target, env->SetProtoMethod(t, "getCurrentBuffer", Parser::GetCurrentBuffer); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "HTTPParser"), - t->GetFunction()); + t->GetFunction(env->context()).ToLocalChecked()); } } // anonymous namespace diff --git a/src/node_perf.cc b/src/node_perf.cc index 828a1dd7ff4bde..204996384af3a3 100644 --- a/src/node_perf.cc +++ b/src/node_perf.cc @@ -405,7 +405,7 @@ void Initialize(Local target, Local pe = FunctionTemplate::New(isolate); pe->SetClassName(performanceEntryString); - Local fn = pe->GetFunction(); + Local fn = pe->GetFunction(context).ToLocalChecked(); target->Set(context, performanceEntryString, fn).FromJust(); env->set_performance_entry_template(fn); diff --git a/src/node_stat_watcher.cc b/src/node_stat_watcher.cc index 5e47476fd97a0c..91333714b28623 100644 --- a/src/node_stat_watcher.cc +++ b/src/node_stat_watcher.cc @@ -56,7 +56,8 @@ void StatWatcher::Initialize(Environment* env, Local target) { env->SetProtoMethod(t, "start", StatWatcher::Start); - target->Set(statWatcherString, t->GetFunction()); + target->Set(statWatcherString, + t->GetFunction(env->context()).ToLocalChecked()); } diff --git a/src/node_trace_events.cc b/src/node_trace_events.cc index d59b92555795fb..3c18b0d45b11c9 100644 --- a/src/node_trace_events.cc +++ b/src/node_trace_events.cc @@ -239,7 +239,7 @@ void Initialize(Local target, env->SetProtoMethod(category_set, "disable", NodeCategorySet::Disable); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "CategorySet"), - category_set->GetFunction()); + category_set->GetFunction(env->context()).ToLocalChecked()); Local isTraceCategoryEnabled = FIXED_ONE_BYTE_STRING(env->isolate(), "isTraceCategoryEnabled"); diff --git a/src/node_worker.cc b/src/node_worker.cc index fa192d1291ec84..48364c84f6c93d 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -447,7 +447,7 @@ void InitWorker(Local target, Local workerString = FIXED_ONE_BYTE_STRING(env->isolate(), "Worker"); w->SetClassName(workerString); - target->Set(workerString, w->GetFunction()); + target->Set(workerString, w->GetFunction(env->context()).ToLocalChecked()); } env->SetMethod(target, "getEnvMessagePort", GetEnvMessagePort); diff --git a/src/node_zlib.cc b/src/node_zlib.cc index 3d7c6b004797f2..1591538172169a 100644 --- a/src/node_zlib.cc +++ b/src/node_zlib.cc @@ -773,7 +773,7 @@ void Initialize(Local target, Local zlibString = FIXED_ONE_BYTE_STRING(env->isolate(), "Zlib"); z->SetClassName(zlibString); - target->Set(zlibString, z->GetFunction()); + target->Set(zlibString, z->GetFunction(env->context()).ToLocalChecked()); target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "ZLIB_VERSION"), FIXED_ONE_BYTE_STRING(env->isolate(), ZLIB_VERSION)); diff --git a/src/pipe_wrap.cc b/src/pipe_wrap.cc index 84333f7a845290..c37b88cbf1c73b 100644 --- a/src/pipe_wrap.cc +++ b/src/pipe_wrap.cc @@ -57,7 +57,9 @@ Local PipeWrap::Instantiate(Environment* env, EscapableHandleScope handle_scope(env->isolate()); AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent); CHECK_EQ(false, env->pipe_constructor_template().IsEmpty()); - Local constructor = env->pipe_constructor_template()->GetFunction(); + Local constructor = env->pipe_constructor_template() + ->GetFunction(env->context()) + .ToLocalChecked(); CHECK_EQ(false, constructor.IsEmpty()); Local type_value = Int32::New(env->isolate(), type); Local instance = @@ -91,7 +93,7 @@ void PipeWrap::Initialize(Local target, env->SetProtoMethod(t, "fchmod", Fchmod); - target->Set(pipeString, t->GetFunction()); + target->Set(pipeString, t->GetFunction(env->context()).ToLocalChecked()); env->set_pipe_constructor_template(t); // Create FunctionTemplate for PipeConnectWrap. @@ -100,7 +102,7 @@ void PipeWrap::Initialize(Local target, Local wrapString = FIXED_ONE_BYTE_STRING(env->isolate(), "PipeConnectWrap"); cwt->SetClassName(wrapString); - target->Set(wrapString, cwt->GetFunction()); + target->Set(wrapString, cwt->GetFunction(env->context()).ToLocalChecked()); // Define constants Local constants = Object::New(env->isolate()); diff --git a/src/process_wrap.cc b/src/process_wrap.cc index a38dd082111c4b..daace375498d25 100644 --- a/src/process_wrap.cc +++ b/src/process_wrap.cc @@ -64,7 +64,8 @@ class ProcessWrap : public HandleWrap { env->SetProtoMethod(constructor, "spawn", Spawn); env->SetProtoMethod(constructor, "kill", Kill); - target->Set(processString, constructor->GetFunction()); + target->Set(processString, + constructor->GetFunction(context).ToLocalChecked()); } void MemoryInfo(MemoryTracker* tracker) const override { diff --git a/src/signal_wrap.cc b/src/signal_wrap.cc index 4ff57a72431e9b..efc83036765723 100644 --- a/src/signal_wrap.cc +++ b/src/signal_wrap.cc @@ -57,7 +57,8 @@ class SignalWrap : public HandleWrap { env->SetProtoMethod(constructor, "start", Start); env->SetProtoMethod(constructor, "stop", Stop); - target->Set(signalString, constructor->GetFunction()); + target->Set(signalString, + constructor->GetFunction(env->context()).ToLocalChecked()); } void MemoryInfo(MemoryTracker* tracker) const override { diff --git a/src/stream_pipe.cc b/src/stream_pipe.cc index e19f98e35d2821..90da2043af9c26 100644 --- a/src/stream_pipe.cc +++ b/src/stream_pipe.cc @@ -260,7 +260,10 @@ void InitializeStreamPipe(Local target, AsyncWrap::AddWrapMethods(env, pipe); pipe->SetClassName(stream_pipe_string); pipe->InstanceTemplate()->SetInternalFieldCount(1); - target->Set(context, stream_pipe_string, pipe->GetFunction()).FromJust(); + target + ->Set(context, stream_pipe_string, + pipe->GetFunction(context).ToLocalChecked()) + .FromJust(); } } // anonymous namespace diff --git a/src/stream_wrap.cc b/src/stream_wrap.cc index 60a17545427b16..d1968f86280f99 100644 --- a/src/stream_wrap.cc +++ b/src/stream_wrap.cc @@ -68,7 +68,7 @@ void LibuvStreamWrap::Initialize(Local target, FIXED_ONE_BYTE_STRING(env->isolate(), "ShutdownWrap"); sw->SetClassName(wrapString); AsyncWrap::AddWrapMethods(env, sw); - target->Set(wrapString, sw->GetFunction()); + target->Set(wrapString, sw->GetFunction(env->context()).ToLocalChecked()); env->set_shutdown_wrap_template(sw->InstanceTemplate()); Local ww = @@ -78,7 +78,8 @@ void LibuvStreamWrap::Initialize(Local target, FIXED_ONE_BYTE_STRING(env->isolate(), "WriteWrap"); ww->SetClassName(writeWrapString); AsyncWrap::AddWrapMethods(env, ww); - target->Set(writeWrapString, ww->GetFunction()); + target->Set(writeWrapString, + ww->GetFunction(env->context()).ToLocalChecked()); env->set_write_wrap_template(ww->InstanceTemplate()); } diff --git a/src/tcp_wrap.cc b/src/tcp_wrap.cc index 386f84bd33f407..6b29a6adfb05b2 100644 --- a/src/tcp_wrap.cc +++ b/src/tcp_wrap.cc @@ -60,7 +60,9 @@ Local TCPWrap::Instantiate(Environment* env, EscapableHandleScope handle_scope(env->isolate()); AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent); CHECK_EQ(env->tcp_constructor_template().IsEmpty(), false); - Local constructor = env->tcp_constructor_template()->GetFunction(); + Local constructor = env->tcp_constructor_template() + ->GetFunction(env->context()) + .ToLocalChecked(); CHECK_EQ(constructor.IsEmpty(), false); Local type_value = Int32::New(env->isolate(), type); Local instance = @@ -107,7 +109,7 @@ void TCPWrap::Initialize(Local target, env->SetProtoMethod(t, "setSimultaneousAccepts", SetSimultaneousAccepts); #endif - target->Set(tcpString, t->GetFunction()); + target->Set(tcpString, t->GetFunction(env->context()).ToLocalChecked()); env->set_tcp_constructor_template(t); // Create FunctionTemplate for TCPConnectWrap. @@ -117,7 +119,7 @@ void TCPWrap::Initialize(Local target, Local wrapString = FIXED_ONE_BYTE_STRING(env->isolate(), "TCPConnectWrap"); cwt->SetClassName(wrapString); - target->Set(wrapString, cwt->GetFunction()); + target->Set(wrapString, cwt->GetFunction(env->context()).ToLocalChecked()); // Define constants Local constants = Object::New(env->isolate()); diff --git a/src/tls_wrap.cc b/src/tls_wrap.cc index eb40d856fdab4b..e495b6947ea6f1 100644 --- a/src/tls_wrap.cc +++ b/src/tls_wrap.cc @@ -908,9 +908,10 @@ void TLSWrap::Initialize(Local target, env->SetProtoMethod(t, "getServername", GetServername); env->SetProtoMethod(t, "setServername", SetServername); - env->set_tls_wrap_constructor_function(t->GetFunction()); + env->set_tls_wrap_constructor_function( + t->GetFunction(env->context()).ToLocalChecked()); - target->Set(tlsWrapString, t->GetFunction()); + target->Set(tlsWrapString, t->GetFunction(env->context()).ToLocalChecked()); } } // namespace node diff --git a/src/tty_wrap.cc b/src/tty_wrap.cc index 15ee1e9bd27afb..90e7ecc42fe427 100644 --- a/src/tty_wrap.cc +++ b/src/tty_wrap.cc @@ -63,7 +63,7 @@ void TTYWrap::Initialize(Local target, env->SetMethodNoSideEffect(target, "isTTY", IsTTY); env->SetMethodNoSideEffect(target, "guessHandleType", GuessHandleType); - target->Set(ttyString, t->GetFunction()); + target->Set(ttyString, t->GetFunction(env->context()).ToLocalChecked()); env->set_tty_constructor_template(t); } diff --git a/src/udp_wrap.cc b/src/udp_wrap.cc index 724f98c0cc94af..9a70d35cdb44e7 100644 --- a/src/udp_wrap.cc +++ b/src/udp_wrap.cc @@ -137,8 +137,9 @@ void UDPWrap::Initialize(Local target, AsyncWrap::AddWrapMethods(env, t); HandleWrap::AddWrapMethods(env, t); - target->Set(udpString, t->GetFunction()); - env->set_udp_constructor_function(t->GetFunction()); + target->Set(udpString, t->GetFunction(env->context()).ToLocalChecked()); + env->set_udp_constructor_function( + t->GetFunction(env->context()).ToLocalChecked()); // Create FunctionTemplate for SendWrap Local swt = @@ -147,7 +148,8 @@ void UDPWrap::Initialize(Local target, Local sendWrapString = FIXED_ONE_BYTE_STRING(env->isolate(), "SendWrap"); swt->SetClassName(sendWrapString); - target->Set(sendWrapString, swt->GetFunction()); + target->Set(sendWrapString, + swt->GetFunction(env->context()).ToLocalChecked()); } diff --git a/src/uv.cc b/src/uv.cc index 576c2fc7734d92..efcb8056124318 100644 --- a/src/uv.cc +++ b/src/uv.cc @@ -57,7 +57,9 @@ void Initialize(Local target, Environment* env = Environment::GetCurrent(context); Isolate* isolate = env->isolate(); target->Set(FIXED_ONE_BYTE_STRING(isolate, "errname"), - env->NewFunctionTemplate(ErrName)->GetFunction()); + env->NewFunctionTemplate(ErrName) + ->GetFunction(env->context()) + .ToLocalChecked()); #define V(name, _) NODE_DEFINE_CONSTANT(target, UV_##name); UV_ERRNO_MAP(V) diff --git a/test/addons/heap-profiler/binding.cc b/test/addons/heap-profiler/binding.cc index 09feefa66902aa..861fb5a80c4651 100644 --- a/test/addons/heap-profiler/binding.cc +++ b/test/addons/heap-profiler/binding.cc @@ -18,8 +18,11 @@ inline void Test(const v8::FunctionCallbackInfo& args) { inline void Initialize(v8::Local binding) { v8::Isolate* const isolate = binding->GetIsolate(); + v8::Local context = isolate->GetCurrentContext(); binding->Set(v8::String::NewFromUtf8(isolate, "test"), - v8::FunctionTemplate::New(isolate, Test)->GetFunction()); + v8::FunctionTemplate::New(isolate, Test) + ->GetFunction(context) + .ToLocalChecked()); } NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize) diff --git a/test/addons/new-target/binding.cc b/test/addons/new-target/binding.cc index 3ae2aca7c2ef95..21b932ae018dfd 100644 --- a/test/addons/new-target/binding.cc +++ b/test/addons/new-target/binding.cc @@ -11,8 +11,11 @@ inline void NewClass(const v8::FunctionCallbackInfo& args) { inline void Initialize(v8::Local binding) { auto isolate = binding->GetIsolate(); + auto context = isolate->GetCurrentContext(); binding->Set(v8::String::NewFromUtf8(isolate, "Class"), - v8::FunctionTemplate::New(isolate, NewClass)->GetFunction()); + v8::FunctionTemplate::New(isolate, NewClass) + ->GetFunction(context) + .ToLocalChecked()); } NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize) diff --git a/test/addons/openssl-binding/binding.cc b/test/addons/openssl-binding/binding.cc index fa40b3346a7a39..bb00f1e176d7ce 100644 --- a/test/addons/openssl-binding/binding.cc +++ b/test/addons/openssl-binding/binding.cc @@ -23,7 +23,9 @@ inline void Initialize(v8::Local exports, v8::Local context) { auto isolate = context->GetIsolate(); auto key = v8::String::NewFromUtf8(isolate, "randomBytes"); - auto value = v8::FunctionTemplate::New(isolate, RandomBytes)->GetFunction(); + auto value = v8::FunctionTemplate::New(isolate, RandomBytes) + ->GetFunction(context) + .ToLocalChecked(); assert(exports->Set(context, key, value).IsJust()); } diff --git a/test/addons/zlib-binding/binding.cc b/test/addons/zlib-binding/binding.cc index a9a8c14306c486..1d0af911115359 100644 --- a/test/addons/zlib-binding/binding.cc +++ b/test/addons/zlib-binding/binding.cc @@ -46,7 +46,9 @@ inline void Initialize(v8::Local exports, v8::Local context) { auto isolate = context->GetIsolate(); auto key = v8::String::NewFromUtf8(isolate, "compressBytes"); - auto value = v8::FunctionTemplate::New(isolate, CompressBytes)->GetFunction(); + auto value = v8::FunctionTemplate::New(isolate, CompressBytes) + ->GetFunction(context) + .ToLocalChecked(); assert(exports->Set(context, key, value).IsJust()); } diff --git a/test/cctest/test_node_postmortem_metadata.cc b/test/cctest/test_node_postmortem_metadata.cc index 6f5db0fdf9272b..743b4ccc88ae0e 100644 --- a/test/cctest/test_node_postmortem_metadata.cc +++ b/test/cctest/test_node_postmortem_metadata.cc @@ -134,8 +134,10 @@ TEST_F(DebugSymbolsTest, HandleWrapList) { auto obj_template = v8::FunctionTemplate::New(isolate_); obj_template->InstanceTemplate()->SetInternalFieldCount(1); - v8::Local object = - obj_template->GetFunction()->NewInstance(env.context()).ToLocalChecked(); + v8::Local object = obj_template->GetFunction(env.context()) + .ToLocalChecked() + ->NewInstance(env.context()) + .ToLocalChecked(); TestHandleWrap obj(*env, object, &handle); auto queue = reinterpret_cast((*env)->handle_wrap_queue()); @@ -161,8 +163,10 @@ TEST_F(DebugSymbolsTest, ReqWrapList) { auto obj_template = v8::FunctionTemplate::New(isolate_); obj_template->InstanceTemplate()->SetInternalFieldCount(1); - v8::Local object = - obj_template->GetFunction()->NewInstance(env.context()).ToLocalChecked(); + v8::Local object = obj_template->GetFunction(env.context()) + .ToLocalChecked() + ->NewInstance(env.context()) + .ToLocalChecked(); TestReqWrap obj(*env, object); // NOTE (mmarchini): Workaround to fix failing tests on ARM64 machines with