diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/node_main_instance.cc | 6 | ||||
-rw-r--r-- | src/node_main_instance.h | 16 |
2 files changed, 13 insertions, 9 deletions
diff --git a/src/node_main_instance.cc b/src/node_main_instance.cc index f49b9fbb4d..5d5a48cc36 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> NodeMainInstance::Create( Isolate* isolate, uv_loop_t* event_loop, MultiIsolatePlatform* platform, const std::vector<std::string>& args, const std::vector<std::string>& exec_args) { - return new NodeMainInstance(isolate, event_loop, platform, args, exec_args); + return std::unique_ptr<NodeMainInstance>( + 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 a971c899b8..5bc18cb3de 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 <cstddef> +#include <memory> + #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<NodeMainInstance> 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<std::string>& args, - const std::vector<std::string>& exec_args); + static std::unique_ptr<NodeMainInstance> Create( + v8::Isolate* isolate, + uv_loop_t* event_loop, + MultiIsolatePlatform* platform, + const std::vector<std::string>& args, + const std::vector<std::string>& exec_args); + void Dispose(); // Create a main instance that owns the isolate |