From 821e21de8cb96bb549ea01bcb59c8bb0e27e218a Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Thu, 27 Feb 2020 17:11:35 -0800 Subject: [PATCH] src: add unique_ptr equivalent of CreatePlatform This makes this bit of the embedder situation a bit easier to use. PR-URL: https://github.com/nodejs/node/pull/30467 Reviewed-By: James M Snell Reviewed-By: Gireesh Punathil --- src/api/environment.cc | 9 ++++++++- src/node.h | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/api/environment.cc b/src/api/environment.cc index 64b37f929c5212..700785a6ea44d1 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -490,13 +490,20 @@ MultiIsolatePlatform* GetMainThreadMultiIsolatePlatform() { MultiIsolatePlatform* CreatePlatform( int thread_pool_size, node::tracing::TracingController* tracing_controller) { - return new NodePlatform(thread_pool_size, tracing_controller); + return MultiIsolatePlatform::Create(thread_pool_size, tracing_controller) + .release(); } void FreePlatform(MultiIsolatePlatform* platform) { delete platform; } +std::unique_ptr MultiIsolatePlatform::Create( + int thread_pool_size, + node::tracing::TracingController* tracing_controller) { + return std::make_unique(thread_pool_size, tracing_controller); +} + MaybeLocal GetPerContextExports(Local context) { Isolate* isolate = context->GetIsolate(); EscapableHandleScope handle_scope(isolate); diff --git a/src/node.h b/src/node.h index b69dd32b4e0480..b25afe3150f8fe 100644 --- a/src/node.h +++ b/src/node.h @@ -316,6 +316,10 @@ class NODE_EXTERN MultiIsolatePlatform : public v8::Platform { virtual void AddIsolateFinishedCallback(v8::Isolate* isolate, void (*callback)(void*), void* data) = 0; + + static std::unique_ptr Create( + int thread_pool_size, + node::tracing::TracingController* tracing_controller = nullptr); }; enum IsolateSettingsFlags { @@ -467,6 +471,7 @@ NODE_EXTERN Environment* GetCurrentEnvironment(v8::Local context); // it returns nullptr. NODE_EXTERN MultiIsolatePlatform* GetMainThreadMultiIsolatePlatform(); +// Legacy variants of MultiIsolatePlatform::Create(). NODE_EXTERN MultiIsolatePlatform* CreatePlatform( int thread_pool_size, node::tracing::TracingController* tracing_controller);