diff --git a/src/api/environment.cc b/src/api/environment.cc index 8aa230c8a60421..52c67b91c3b034 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -466,6 +466,14 @@ MultiIsolatePlatform* GetMainThreadMultiIsolatePlatform() { return per_process::v8_platform.Platform(); } +IsolateData* GetEnvironmentIsolateData(Environment* env) { + return env->isolate_data(); +} + +ArrayBufferAllocator* GetArrayBufferAllocator(IsolateData* isolate_data) { + return isolate_data->node_allocator(); +} + MultiIsolatePlatform* GetMultiIsolatePlatform(Environment* env) { return GetMultiIsolatePlatform(env->isolate_data()); } diff --git a/src/node.h b/src/node.h index b5c268eed685f1..f1b11aaa3edc90 100644 --- a/src/node.h +++ b/src/node.h @@ -500,6 +500,8 @@ NODE_EXTERN void DefaultProcessExitHandler(Environment* env, int exit_code); // This may return nullptr if context is not associated with a Node instance. NODE_EXTERN Environment* GetCurrentEnvironment(v8::Local context); +NODE_EXTERN IsolateData* GetEnvironmentIsolateData(Environment* env); +NODE_EXTERN ArrayBufferAllocator* GetArrayBufferAllocator(IsolateData* data); NODE_EXTERN void OnFatalError(const char* location, const char* message); NODE_EXTERN void PromiseRejectCallback(v8::PromiseRejectMessage message); diff --git a/test/cctest/test_environment.cc b/test/cctest/test_environment.cc index 13316ceccb4d8a..0dc789b0a79914 100644 --- a/test/cctest/test_environment.cc +++ b/test/cctest/test_environment.cc @@ -627,6 +627,9 @@ TEST_F(NodeZeroIsolateTestFixture, CtrlCWithOnlySafeTerminationTest) { {}), node::FreeEnvironment}; CHECK(environment); + EXPECT_EQ(node::GetEnvironmentIsolateData(environment.get()), + isolate_data.get()); + EXPECT_EQ(node::GetArrayBufferAllocator(isolate_data.get()), nullptr); v8::Local main_ret = node::LoadEnvironment(environment.get(),