From 4d72e1345e7c38bc7fb7cb61c394834f137dca66 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Fri, 21 Feb 2020 09:37:26 -0800 Subject: [PATCH] Fixup v8 weakref hook spec https://github.com/nodejs/node/pull/29874 --- shell/app/node_main.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/shell/app/node_main.cc b/shell/app/node_main.cc index 5d59eb5773092..41d4cf84ba59f 100644 --- a/shell/app/node_main.cc +++ b/shell/app/node_main.cc @@ -74,6 +74,17 @@ void SetNodeCliFlags() { ProcessGlobalArgs(&args, nullptr, &errors, node::kDisallowedInEnvironment); } +// TODO(codebytere): expose this from Node.js itself? +void HostCleanupFinalizationGroupCallback( + v8::Local context, + v8::Local group) { + node::Environment* env = node::Environment::GetCurrent(context); + if (env == nullptr) { + return; + } + env->RegisterFinalizationGroupForCleanup(group); +} + } // namespace namespace electron { @@ -143,6 +154,10 @@ int NodeMain(int argc, char* argv[]) { node::BootstrapEnvironment(env); env->InitializeDiagnostics(); + // This is needed in order to enable v8 host weakref hooks. + gin_env.isolate()->SetHostCleanupFinalizationGroupCallback( + HostCleanupFinalizationGroupCallback); + gin_helper::Dictionary process(gin_env.isolate(), env->process_object()); #if defined(OS_WIN) process.SetMethod("log", &ElectronBindings::Log);