Skip to content

Commit cc4a25a

Browse files
richardlautargos
authored andcommitted
lib: lazy load v8 in error-serdes
Lazy loading `v8` in `lib/internal/error-serdes.js` reduces the number of loaded modules by the bootstrap code for Worker threads by seven. PR-URL: #26689 Refs: #26501 (comment) Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
1 parent 1f4a5bc commit cc4a25a

File tree

2 files changed

+4
-8
lines changed

2 files changed

+4
-8
lines changed

lib/internal/error-serdes.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
'use strict';
22

33
const Buffer = require('buffer').Buffer;
4-
const { serialize, deserialize } = require('v8');
54
const {
65
SafeSet,
76
Object,
@@ -85,7 +84,9 @@ function inspect(...args) {
8584
return internalUtilInspect.inspect(...args);
8685
}
8786

87+
let serialize;
8888
function serializeError(error) {
89+
if (!serialize) serialize = require('v8').serialize;
8990
try {
9091
if (typeof error === 'object' &&
9192
ObjectPrototypeToString(error) === '[object Error]') {
@@ -110,7 +111,9 @@ function serializeError(error) {
110111
Buffer.from(inspect(error), 'utf8')]);
111112
}
112113

114+
let deserialize;
113115
function deserializeError(error) {
116+
if (!deserialize) deserialize = require('v8').deserialize;
114117
switch (error[0]) {
115118
case kSerializedError:
116119
const { constructor, properties } = deserialize(error.subarray(1));

test/parallel/test-bootstrap-modules.js

-7
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,8 @@ if (common.isMainThread) {
7171
expectedModules.add('NativeModule internal/process/main_thread_only');
7272
expectedModules.add('NativeModule internal/process/stdio');
7373
} else {
74-
expectedModules.add('Internal Binding heap_utils');
7574
expectedModules.add('Internal Binding messaging');
76-
expectedModules.add('Internal Binding serdes');
77-
expectedModules.add('Internal Binding stream_wrap');
7875
expectedModules.add('Internal Binding symbols');
79-
expectedModules.add('Internal Binding uv');
80-
expectedModules.add('Internal Binding v8');
8176
expectedModules.add('Internal Binding worker');
8277
expectedModules.add('NativeModule _stream_duplex');
8378
expectedModules.add('NativeModule _stream_passthrough');
@@ -86,7 +81,6 @@ if (common.isMainThread) {
8681
expectedModules.add('NativeModule _stream_writable');
8782
expectedModules.add('NativeModule internal/error-serdes');
8883
expectedModules.add('NativeModule internal/process/worker_thread_only');
89-
expectedModules.add('NativeModule internal/stream_base_commons');
9084
expectedModules.add('NativeModule internal/streams/buffer_list');
9185
expectedModules.add('NativeModule internal/streams/destroy');
9286
expectedModules.add('NativeModule internal/streams/end-of-stream');
@@ -97,7 +91,6 @@ if (common.isMainThread) {
9791
expectedModules.add('NativeModule internal/worker/io');
9892
expectedModules.add('NativeModule module');
9993
expectedModules.add('NativeModule stream');
100-
expectedModules.add('NativeModule v8');
10194
expectedModules.add('NativeModule worker_threads');
10295
}
10396

0 commit comments

Comments
 (0)