Skip to content

Commit 5f19b8f

Browse files
committed
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. Refs: nodejs#26501 (comment)
1 parent 1cdeb9f commit 5f19b8f

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,
@@ -84,7 +83,9 @@ function lazyUtil() {
8483
return util;
8584
}
8685

86+
let serialize;
8787
function serializeError(error) {
88+
if (!serialize) serialize = require('v8').serialize;
8889
try {
8990
if (typeof error === 'object' &&
9091
ObjectPrototypeToString(error) === '[object Error]') {
@@ -109,7 +110,9 @@ function serializeError(error) {
109110
Buffer.from(lazyUtil().inspect(error), 'utf8')]);
110111
}
111112

113+
let deserialize;
112114
function deserializeError(error) {
115+
if (!deserialize) deserialize = require('v8').deserialize;
113116
switch (error[0]) {
114117
case kSerializedError:
115118
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)