summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/node_main_instance.cc6
-rw-r--r--src/node_main_instance.h16
-rw-r--r--tools/snapshot/snapshot_builder.cc2
3 files changed, 14 insertions, 10 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
diff --git a/tools/snapshot/snapshot_builder.cc b/tools/snapshot/snapshot_builder.cc
index 8cf4cad8d0..7f409a8fcd 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<NodeMainInstance> main_instance;
std::string result;
{