mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
bootstrap: use the isolate snapshot in workers
PR-URL: https://github.com/nodejs/node/pull/42702 Refs: https://github.com/nodejs/node/issues/35711 Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include "node_buffer.h"
|
||||
#include "node_options-inl.h"
|
||||
#include "node_perf.h"
|
||||
#include "node_snapshot_builder.h"
|
||||
#include "util-inl.h"
|
||||
#include "async_wrap-inl.h"
|
||||
|
||||
@@ -146,6 +147,20 @@ class WorkerThreadData {
|
||||
SetIsolateCreateParamsForNode(¶ms);
|
||||
params.array_buffer_allocator_shared = allocator;
|
||||
|
||||
bool use_node_snapshot = true;
|
||||
if (w_->per_isolate_opts_) {
|
||||
use_node_snapshot = w_->per_isolate_opts_->node_snapshot;
|
||||
} else {
|
||||
// IsolateData is created after the Isolate is created so we'll
|
||||
// inherit the option from the parent here.
|
||||
use_node_snapshot = per_process::cli_options->per_isolate->node_snapshot;
|
||||
}
|
||||
const SnapshotData* snapshot_data =
|
||||
use_node_snapshot ? SnapshotBuilder::GetEmbeddedSnapshotData()
|
||||
: nullptr;
|
||||
if (snapshot_data != nullptr) {
|
||||
SnapshotBuilder::InitializeIsolateParams(snapshot_data, ¶ms);
|
||||
}
|
||||
w->UpdateResourceConstraints(¶ms.constraints);
|
||||
|
||||
Isolate* isolate = Isolate::Allocate();
|
||||
|
||||
@@ -10,7 +10,11 @@ if (!process.env.HAS_STARTED_WORKER) {
|
||||
resourceLimits: {
|
||||
maxYoungGenerationSizeMb: 0,
|
||||
maxOldGenerationSizeMb: 0
|
||||
}
|
||||
},
|
||||
// With node snapshot the OOM can occur during the deserialization of
|
||||
// the context, so disable it since we want the OOM to occur during
|
||||
// the creation of the message port.
|
||||
execArgv: [ ...process.execArgv, '--no-node-snapshot']
|
||||
};
|
||||
|
||||
const worker = new Worker(__filename, opts);
|
||||
|
||||
Reference in New Issue
Block a user