summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/api/addons.md15
-rw-r--r--src/cares_wrap.cc9
-rw-r--r--src/env-inl.h16
-rw-r--r--src/env.cc6
-rw-r--r--src/fs_event_wrap.cc2
-rw-r--r--src/inspector_js_api.cc5
-rw-r--r--src/js_stream.cc2
-rw-r--r--src/module_wrap.cc3
-rw-r--r--src/node.h3
-rw-r--r--src/node_api.cc4
-rw-r--r--src/node_contextify.cc6
-rw-r--r--src/node_crypto.cc22
-rw-r--r--src/node_dtrace.cc4
-rw-r--r--src/node_file.cc10
-rw-r--r--src/node_http2.cc4
-rw-r--r--src/node_http_parser.cc2
-rw-r--r--src/node_perf.cc2
-rw-r--r--src/node_stat_watcher.cc3
-rw-r--r--src/node_trace_events.cc2
-rw-r--r--src/node_worker.cc2
-rw-r--r--src/node_zlib.cc2
-rw-r--r--src/pipe_wrap.cc8
-rw-r--r--src/process_wrap.cc3
-rw-r--r--src/signal_wrap.cc3
-rw-r--r--src/stream_pipe.cc5
-rw-r--r--src/stream_wrap.cc5
-rw-r--r--src/tcp_wrap.cc8
-rw-r--r--src/tls_wrap.cc5
-rw-r--r--src/tty_wrap.cc2
-rw-r--r--src/udp_wrap.cc8
-rw-r--r--src/uv.cc4
-rw-r--r--test/addons/heap-profiler/binding.cc5
-rw-r--r--test/addons/new-target/binding.cc5
-rw-r--r--test/addons/openssl-binding/binding.cc4
-rw-r--r--test/addons/zlib-binding/binding.cc4
-rw-r--r--test/cctest/test_node_postmortem_metadata.cc12
36 files changed, 134 insertions, 71 deletions
diff --git a/doc/api/addons.md b/doc/api/addons.md
index 5e06336a85..b2c52d5128 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<Value>& args) {
void CreateFunction(const FunctionCallbackInfo<Value>& args) {
Isolate* isolate = args.GetIsolate();
+ Local<Context> context = isolate->GetCurrentContext();
Local<FunctionTemplate> tpl = FunctionTemplate::New(isolate, MyFunction);
- Local<Function> fn = tpl->GetFunction();
+ Local<Function> 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<Object> exports) {
// Prototype
NODE_SET_PROTOTYPE_METHOD(tpl, "plusOne", PlusOne);
- constructor.Reset(isolate, tpl->GetFunction());
+ Local<Context> 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<Value>& 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> context = isolate->GetCurrentContext();
+ constructor.Reset(isolate, tpl->GetFunction(context).ToLocalChecked());
}
void MyObject::New(const FunctionCallbackInfo<Value>& 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> context = isolate->GetCurrentContext();
+ constructor.Reset(isolate, tpl->GetFunction(context).ToLocalChecked());
}
void MyObject::New(const FunctionCallbackInfo<Value>& args) {
diff --git a/src/cares_wrap.cc b/src/cares_wrap.cc
index 51ca937429..a967414aec 100644
--- a/src/cares_wrap.cc
+++ b/src/cares_wrap.cc
@@ -2224,7 +2224,7 @@ void Initialize(Local<Object> target,
Local<String> addrInfoWrapString =
FIXED_ONE_BYTE_STRING(env->isolate(), "GetAddrInfoReqWrap");
aiw->SetClassName(addrInfoWrapString);
- target->Set(addrInfoWrapString, aiw->GetFunction());
+ target->Set(addrInfoWrapString, aiw->GetFunction(context).ToLocalChecked());
Local<FunctionTemplate> niw =
BaseObject::MakeLazilyInitializedJSTemplate(env);
@@ -2232,7 +2232,7 @@ void Initialize(Local<Object> target,
Local<String> nameInfoWrapString =
FIXED_ONE_BYTE_STRING(env->isolate(), "GetNameInfoReqWrap");
niw->SetClassName(nameInfoWrapString);
- target->Set(nameInfoWrapString, niw->GetFunction());
+ target->Set(nameInfoWrapString, niw->GetFunction(context).ToLocalChecked());
Local<FunctionTemplate> qrw =
BaseObject::MakeLazilyInitializedJSTemplate(env);
@@ -2240,7 +2240,7 @@ void Initialize(Local<Object> target,
Local<String> queryWrapString =
FIXED_ONE_BYTE_STRING(env->isolate(), "QueryReqWrap");
qrw->SetClassName(queryWrapString);
- target->Set(queryWrapString, qrw->GetFunction());
+ target->Set(queryWrapString, qrw->GetFunction(context).ToLocalChecked());
Local<FunctionTemplate> channel_wrap =
env->NewFunctionTemplate(ChannelWrap::New);
@@ -2267,7 +2267,8 @@ void Initialize(Local<Object> target,
Local<String> 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 3556458f9d..e4a635c84d 100644
--- a/src/env-inl.h
+++ b/src/env-inl.h
@@ -715,13 +715,15 @@ inline v8::Local<v8::FunctionTemplate>
inline void Environment::SetMethod(v8::Local<v8::Object> that,
const char* name,
v8::FunctionCallback callback) {
+ v8::Local<v8::Context> context = isolate()->GetCurrentContext();
v8::Local<v8::Function> function =
- NewFunctionTemplate(callback,
- v8::Local<v8::Signature>(),
+ NewFunctionTemplate(callback, v8::Local<v8::Signature>(),
// 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<v8::String> name_string =
@@ -733,13 +735,15 @@ inline void Environment::SetMethod(v8::Local<v8::Object> that,
inline void Environment::SetMethodNoSideEffect(v8::Local<v8::Object> that,
const char* name,
v8::FunctionCallback callback) {
+ v8::Local<v8::Context> context = isolate()->GetCurrentContext();
v8::Local<v8::Function> function =
- NewFunctionTemplate(callback,
- v8::Local<v8::Signature>(),
+ NewFunctionTemplate(callback, v8::Local<v8::Signature>(),
// 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<v8::String> name_string =
diff --git a/src/env.cc b/src/env.cc
index a8c2ab6327..9efeaadff1 100644
--- a/src/env.cc
+++ b/src/env.cc
@@ -268,8 +268,10 @@ void Environment::Start(const std::vector<std::string>& 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 11a1036d60..c51054819f 100644
--- a/src/fs_event_wrap.cc
+++ b/src/fs_event_wrap.cc
@@ -121,7 +121,7 @@ void FSEventWrap::Initialize(Local<Object> target,
Local<FunctionTemplate>(),
static_cast<PropertyAttribute>(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 54b7c4d01c..52184111f5 100644
--- a/src/inspector_js_api.cc
+++ b/src/inspector_js_api.cc
@@ -310,7 +310,10 @@ void Initialize(Local<Object> target, Local<Value> 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 c7e169b465..9aca2f1d4b 100644
--- a/src/js_stream.cc
+++ b/src/js_stream.cc
@@ -211,7 +211,7 @@ void JSStream::Initialize(Local<Object> target,
env->SetProtoMethod(t, "emitEOF", EmitEOF);
StreamBase::AddMethods<JSStream>(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 d751b16de0..1ef22b270d 100644
--- a/src/module_wrap.cc
+++ b/src/module_wrap.cc
@@ -801,7 +801,8 @@ void ModuleWrap::Initialize(Local<Object> 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 9b4dfa6e14..d9b070d14a 100644
--- a/src/node.h
+++ b/src/node.h
@@ -366,9 +366,10 @@ inline void NODE_SET_METHOD(v8::Local<v8::Object> recv,
v8::FunctionCallback callback) {
v8::Isolate* isolate = v8::Isolate::GetCurrent();
v8::HandleScope handle_scope(isolate);
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate,
callback);
- v8::Local<v8::Function> fn = t->GetFunction();
+ v8::Local<v8::Function> fn = t->GetFunction(context).ToLocalChecked();
v8::Local<v8::String> 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 3dd5b38331..83eef0ff2e 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<v8::Context> context = isolate->GetCurrentContext();
+ *result = v8impl::JsValueFromV8LocalValue(
+ scope.Escape(tpl->GetFunction(context).ToLocalChecked()));
if (static_property_count > 0) {
std::vector<napi_property_descriptor> static_descriptors;
diff --git a/src/node_contextify.cc b/src/node_contextify.cc
index 8b9fef5480..bbbbd27292 100644
--- a/src/node_contextify.cc
+++ b/src/node_contextify.cc
@@ -203,7 +203,8 @@ void ContextifyContext::Init(Environment* env, Local<Object> target) {
Local<FunctionTemplate> 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);
@@ -608,7 +609,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 4cf3ac5652..75f0ecb264 100644
--- a/src/node_crypto.cc
+++ b/src/node_crypto.cc
@@ -366,7 +366,8 @@ void SecureContext::Initialize(Environment* env, Local<Object> 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);
}
@@ -2561,7 +2562,7 @@ void CipherBase::Initialize(Environment* env, Local<Object> target) {
env->SetProtoMethod(t, "setAAD", SetAAD);
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "CipherBase"),
- t->GetFunction());
+ t->GetFunction(env->context()).ToLocalChecked());
}
@@ -3195,7 +3196,8 @@ void Hmac::Initialize(Environment* env, v8::Local<Object> 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());
}
@@ -3314,7 +3316,8 @@ void Hash::Initialize(Environment* env, v8::Local<Object> 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());
}
@@ -3508,7 +3511,8 @@ void Sign::Initialize(Environment* env, v8::Local<Object> 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());
}
@@ -3710,7 +3714,7 @@ void Verify::Initialize(Environment* env, v8::Local<Object> target) {
env->SetProtoMethod(t, "verify", VerifyFinal);
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "Verify"),
- t->GetFunction());
+ t->GetFunction(env->context()).ToLocalChecked());
}
@@ -3948,7 +3952,7 @@ void DiffieHellman::Initialize(Environment* env, Local<Object> target) {
attributes);
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "DiffieHellman"),
- t->GetFunction());
+ t->GetFunction(env->context()).ToLocalChecked());
Local<FunctionTemplate> t2 = env->NewFunctionTemplate(DiffieHellmanGroup);
t2->InstanceTemplate()->SetInternalFieldCount(1);
@@ -3977,7 +3981,7 @@ void DiffieHellman::Initialize(Environment* env, Local<Object> target) {
attributes);
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "DiffieHellmanGroup"),
- t2->GetFunction());
+ t2->GetFunction(env->context()).ToLocalChecked());
}
@@ -4326,7 +4330,7 @@ void ECDH::Initialize(Environment* env, Local<Object> 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 517d32064e..164a602fb6 100644
--- a/src/node_dtrace.cc
+++ b/src/node_dtrace.cc
@@ -276,7 +276,9 @@ void InitDTrace(Environment* env, Local<Object> target) {
for (size_t i = 0; i < arraysize(tab); i++) {
Local<String> key = OneByteString(env->isolate(), tab[i].name);
- Local<Value> val = env->NewFunctionTemplate(tab[i].func)->GetFunction();
+ Local<Value> 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 07d5966962..c073c28b2e 100644
--- a/src/node_file.cc
+++ b/src/node_file.cc
@@ -2240,7 +2240,10 @@ void Initialize(Local<Object> target,
Local<String> wrapString =
FIXED_ONE_BYTE_STRING(env->isolate(), "FSReqCallback");
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.
@@ -2274,7 +2277,10 @@ void Initialize(Local<Object> target,
FIXED_ONE_BYTE_STRING(env->isolate(), "FileHandle");
fd->SetClassName(handleString);
StreamBase::AddMethods<FileHandle>(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 7dc695ba79..9a0cc4ae19 100644
--- a/src/node_http2.cc
+++ b/src/node_http2.cc
@@ -2987,7 +2987,7 @@ void Initialize(Local<Object> 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<FunctionTemplate> session =
env->NewFunctionTemplate(Http2Session::New);
@@ -3015,7 +3015,7 @@ void Initialize(Local<Object> target,
Http2Session::RefreshSettings<nghttp2_session_get_remote_settings>);
target->Set(context,
http2SessionClassName,
- session->GetFunction()).FromJust();
+ session->GetFunction(env->context()).ToLocalChecked()).FromJust();
Local<Object> constants = Object::New(isolate);
Local<Array> name_for_error_code = Array::New(isolate);
diff --git a/src/node_http_parser.cc b/src/node_http_parser.cc
index 07dd800b25..3236dd4f9f 100644
--- a/src/node_http_parser.cc
+++ b/src/node_http_parser.cc
@@ -776,7 +776,7 @@ void Initialize(Local<Object> 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 da6d571f20..1e1fe13d93 100644
--- a/src/node_perf.cc
+++ b/src/node_perf.cc
@@ -405,7 +405,7 @@ void Initialize(Local<Object> target,
Local<FunctionTemplate> pe = FunctionTemplate::New(isolate);
pe->SetClassName(performanceEntryString);
- Local<Function> fn = pe->GetFunction();
+ Local<Function> 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 5e47476fd9..91333714b2 100644
--- a/src/node_stat_watcher.cc
+++ b/src/node_stat_watcher.cc
@@ -56,7 +56,8 @@ void StatWatcher::Initialize(Environment* env, Local<Object> 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 6e70cfce7b..f60c5cd9b5 100644
--- a/src/node_trace_events.cc
+++ b/src/node_trace_events.cc
@@ -113,7 +113,7 @@ void Initialize(Local<Object> 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<String> isTraceCategoryEnabled =
FIXED_ONE_BYTE_STRING(env->isolate(), "isTraceCategoryEnabled");
diff --git a/src/node_worker.cc b/src/node_worker.cc
index 675c3e03a0..aee97095a4 100644
--- a/src/node_worker.cc
+++ b/src/node_worker.cc
@@ -492,7 +492,7 @@ void InitWorker(Local<Object> target,
Local<String> 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 3d7c6b0047..1591538172 100644
--- a/src/node_zlib.cc
+++ b/src/node_zlib.cc
@@ -773,7 +773,7 @@ void Initialize(Local<Object> target,
Local<String> 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 00c0eef654..f3317ecc8c 100644
--- a/src/pipe_wrap.cc
+++ b/src/pipe_wrap.cc
@@ -57,7 +57,9 @@ Local<Object> PipeWrap::Instantiate(Environment* env,
EscapableHandleScope handle_scope(env->isolate());
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent);
CHECK_EQ(false, env->pipe_constructor_template().IsEmpty());
- Local<Function> constructor = env->pipe_constructor_template()->GetFunction();
+ Local<Function> constructor = env->pipe_constructor_template()
+ ->GetFunction(env->context())
+ .ToLocalChecked();
CHECK_EQ(false, constructor.IsEmpty());
Local<Value> type_value = Int32::New(env->isolate(), type);
Local<Object> instance =
@@ -91,7 +93,7 @@ void PipeWrap::Initialize(Local<Object> 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<Object> target,
Local<String> 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<Object> constants = Object::New(env->isolate());
diff --git a/src/process_wrap.cc b/src/process_wrap.cc
index e072b10e3f..1daa437b29 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 78b4155fd5..b9ec037b45 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 e19f98e35d..90da2043af 100644
--- a/src/stream_pipe.cc
+++ b/src/stream_pipe.cc
@@ -260,7 +260,10 @@ void InitializeStreamPipe(Local<Object> 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 350aae335a..9738d2a53b 100644
--- a/src/stream_wrap.cc
+++ b/src/stream_wrap.cc
@@ -67,7 +67,7 @@ void LibuvStreamWrap::Initialize(Local<Object> 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<FunctionTemplate> ww =
@@ -77,7 +77,8 @@ void LibuvStreamWrap::Initialize(Local<Object> 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 d8080319aa..554b0216fa 100644
--- a/src/tcp_wrap.cc
+++ b/src/tcp_wrap.cc
@@ -60,7 +60,9 @@ Local<Object> TCPWrap::Instantiate(Environment* env,
EscapableHandleScope handle_scope(env->isolate());
AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(parent);
CHECK_EQ(env->tcp_constructor_template().IsEmpty(), false);
- Local<Function> constructor = env->tcp_constructor_template()->GetFunction();
+ Local<Function> constructor = env->tcp_constructor_template()
+ ->GetFunction(env->context())
+ .ToLocalChecked();
CHECK_EQ(constructor.IsEmpty(), false);
Local<Value> type_value = Int32::New(env->isolate(), type);
Local<Object> instance =
@@ -107,7 +109,7 @@ void TCPWrap::Initialize(Local<Object> 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<Object> target,
Local<String> 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<Object> constants = Object::New(env->isolate());
diff --git a/src/tls_wrap.cc b/src/tls_wrap.cc
index 7ff8b068eb..27bedd08ce 100644
--- a/src/tls_wrap.cc
+++ b/src/tls_wrap.cc
@@ -905,9 +905,10 @@ void TLSWrap::Initialize(Local<Object> 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 8151ba02a2..e7b684a7ee 100644
--- a/src/tty_wrap.cc
+++ b/src/tty_wrap.cc
@@ -63,7 +63,7 @@ void TTYWrap::Initialize(Local<Object> 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 8005eeb9ff..510926abde 100644
--- a/src/udp_wrap.cc
+++ b/src/udp_wrap.cc
@@ -138,8 +138,9 @@ void UDPWrap::Initialize(Local<Object> 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<FunctionTemplate> swt =
@@ -148,7 +149,8 @@ void UDPWrap::Initialize(Local<Object> target,
Local<String> 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 da67fce803..3d070a32bd 100644
--- a/src/uv.cc
+++ b/src/uv.cc
@@ -57,7 +57,9 @@ void Initialize(Local<Object> 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 09feefa669..861fb5a80c 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<v8::Value>& args) {
inline void Initialize(v8::Local<v8::Object> binding) {
v8::Isolate* const isolate = binding->GetIsolate();
+ v8::Local<v8::Context> 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 3ae2aca7c2..21b932ae01 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<v8::Value>& args) {
inline void Initialize(v8::Local<v8::Object> 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 fa40b3346a..bb00f1e176 100644
--- a/test/addons/openssl-binding/binding.cc
+++ b/test/addons/openssl-binding/binding.cc
@@ -23,7 +23,9 @@ inline void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Context> 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 a9a8c14306..1d0af91111 100644
--- a/test/addons/zlib-binding/binding.cc
+++ b/test/addons/zlib-binding/binding.cc
@@ -46,7 +46,9 @@ inline void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Context> 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 8e8cbabf00..f0a93f3185 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<v8::Object> object =
- obj_template->GetFunction()->NewInstance(env.context()).ToLocalChecked();
+ v8::Local<v8::Object> object = obj_template->GetFunction(env.context())
+ .ToLocalChecked()
+ ->NewInstance(env.context())
+ .ToLocalChecked();
TestHandleWrap obj(*env, object, &handle);
auto queue = reinterpret_cast<uintptr_t>((*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<v8::Object> object =
- obj_template->GetFunction()->NewInstance(env.context()).ToLocalChecked();
+ v8::Local<v8::Object> 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