From cf929c04b082f0d1d980772d343f056ea4fd7359 Mon Sep 17 00:00:00 2001 From: GauthamBanasandra Date: Sat, 6 Jul 2019 19:24:26 +0530 Subject: src, tools: replace raw ptr with smart ptr NodeMainInstance::Create will now returrn an instance of NodeMainInstance in a unique_ptr. PR-URL: https://github.com/nodejs/node/pull/28577 Reviewed-By: Anna Henningsen Reviewed-By: Luigi Pinca Reviewed-By: Rich Trott --- src/node_main_instance.cc | 6 +++--- src/node_main_instance.h | 16 ++++++++++------ tools/snapshot/snapshot_builder.cc | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/node_main_instance.cc b/src/node_main_instance.cc index f49b9fbb4d3..5d5a48cc36a 100644 --- a/src/node_main_instance.cc +++ b/src/node_main_instance.cc @@ -30,13 +30,14 @@ NodeMainInstance::NodeMainInstance(Isolate* isolate, SetIsolateUpForNode(isolate_, IsolateSettingCategories::kMisc); } -NodeMainInstance* NodeMainInstance::Create( +std::unique_ptr NodeMainInstance::Create( Isolate* isolate, uv_loop_t* event_loop, MultiIsolatePlatform* platform, const std::vector& args, const std::vector& exec_args) { - return new NodeMainInstance(isolate, event_loop, platform, args, exec_args); + return std::unique_ptr( + new NodeMainInstance(isolate, event_loop, platform, args, exec_args)); } NodeMainInstance::NodeMainInstance( @@ -81,7 +82,6 @@ NodeMainInstance::NodeMainInstance( void NodeMainInstance::Dispose() { CHECK(!owns_isolate_); platform_->DrainTasks(isolate_); - delete this; } NodeMainInstance::~NodeMainInstance() { diff --git a/src/node_main_instance.h b/src/node_main_instance.h index a971c899b81..5bc18cb3de6 100644 --- a/src/node_main_instance.h +++ b/src/node_main_instance.h @@ -4,6 +4,8 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include +#include + #include "node.h" #include "util.h" #include "uv.h" @@ -22,7 +24,7 @@ class NodeMainInstance { // platform->RegisterIsolate(isolate, loop); // isolate->Initialize(...); // isolate->Enter(); - // NodeMainInstance* main_instance = + // std::unique_ptr main_instance = // NodeMainInstance::Create(isolate, loop, args, exec_args); // // When tearing it down: @@ -33,11 +35,13 @@ class NodeMainInstance { // platform->UnregisterIsolate(isolate); // // After calling Dispose() the main_instance is no longer accessible. - static NodeMainInstance* Create(v8::Isolate* isolate, - uv_loop_t* event_loop, - MultiIsolatePlatform* platform, - const std::vector& args, - const std::vector& exec_args); + static std::unique_ptr Create( + v8::Isolate* isolate, + uv_loop_t* event_loop, + MultiIsolatePlatform* platform, + const std::vector& args, + const std::vector& exec_args); + void Dispose(); // Create a main instance that owns the isolate diff --git a/tools/snapshot/snapshot_builder.cc b/tools/snapshot/snapshot_builder.cc index 8cf4cad8d0b..7f409a8fcd2 100644 --- a/tools/snapshot/snapshot_builder.cc +++ b/tools/snapshot/snapshot_builder.cc @@ -70,7 +70,7 @@ std::string SnapshotBuilder::Generate( Isolate* isolate = Isolate::Allocate(); per_process::v8_platform.Platform()->RegisterIsolate(isolate, uv_default_loop()); - NodeMainInstance* main_instance = nullptr; + std::unique_ptr main_instance; std::string result; { -- cgit v1.2.3