12
12
#include " node_internals.h"
13
13
#include " node_main_instance.h"
14
14
#include " node_process.h"
15
+ #include " node_snapshot_builder.h"
15
16
#include " node_v8.h"
16
17
#include " node_v8_platform-inl.h"
17
18
@@ -49,7 +50,7 @@ std::string FormatBlob(SnapshotData* data) {
49
50
50
51
ss << R"( #include <cstddef>
51
52
#include "env.h"
52
- #include "node_main_instance .h"
53
+ #include "node_snapshot_builder .h"
53
54
#include "v8.h"
54
55
55
56
// This file is generated by tools/snapshot. Do not edit.
@@ -78,11 +79,12 @@ SnapshotData snapshot_data {
78
79
// -- isolate_data_indices ends --
79
80
// -- env_info begins --
80
81
)" << data->env_info
81
- << R"(
82
+ << R"(
82
83
// -- env_info ends --
83
84
};
84
85
85
- const SnapshotData* NodeMainInstance::GetEmbeddedSnapshotData() {
86
+ const SnapshotData* SnapshotBuilder::GetEmbeddedSnapshotData() {
87
+ Mutex::ScopedLock lock(snapshot_data_mutex_);
86
88
return &snapshot_data;
87
89
}
88
90
} // namespace node
@@ -91,6 +93,19 @@ const SnapshotData* NodeMainInstance::GetEmbeddedSnapshotData() {
91
93
return ss.str ();
92
94
}
93
95
96
+ Mutex SnapshotBuilder::snapshot_data_mutex_;
97
+
98
+ const std::vector<intptr_t >& SnapshotBuilder::CollectExternalReferences () {
99
+ static auto registry = std::make_unique<ExternalReferenceRegistry>();
100
+ return registry->external_references ();
101
+ }
102
+
103
+ void SnapshotBuilder::InitializeIsolateParams (const SnapshotData* data,
104
+ Isolate::CreateParams* params) {
105
+ params->external_references = CollectExternalReferences ().data ();
106
+ params->snapshot_blob = const_cast <v8::StartupData*>(&(data->blob ));
107
+ }
108
+
94
109
void SnapshotBuilder::Generate (SnapshotData* out,
95
110
const std::vector<std::string> args,
96
111
const std::vector<std::string> exec_args) {
@@ -104,7 +119,7 @@ void SnapshotBuilder::Generate(SnapshotData* out,
104
119
105
120
{
106
121
const std::vector<intptr_t >& external_references =
107
- NodeMainInstance:: CollectExternalReferences ();
122
+ CollectExternalReferences ();
108
123
SnapshotCreator creator (isolate, external_references.data ());
109
124
Environment* env;
110
125
{
0 commit comments