From f3d826a8a9a88d68d162d4faf88ec495a27f8f31 Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Fri, 27 Oct 2023 16:27:36 +0200 Subject: [PATCH] stream: pre-allocate _events --- lib/internal/streams/duplex.js | 15 +++++++++++++++ lib/internal/streams/readable.js | 12 ++++++++++++ lib/internal/streams/writable.js | 8 ++++++++ 3 files changed, 35 insertions(+) diff --git a/lib/internal/streams/duplex.js b/lib/internal/streams/duplex.js index 834d875be6c4d9..2b3fe64df9e03a 100644 --- a/lib/internal/streams/duplex.js +++ b/lib/internal/streams/duplex.js @@ -63,6 +63,21 @@ function Duplex(options) { if (!(this instanceof Duplex)) return new Duplex(options); + this._events = { + close: undefined, + error: undefined, + prefinish: undefined, + finish: undefined, + drain: undefined, + data: undefined, + end: undefined, + pause: undefined, + resume: undefined, + readable: undefined, + pipe: undefined, + unpipe: undefined, + }; + this._readableState = new Readable.ReadableState(options, this, true); this._writableState = new Writable.WritableState(options, this, true); diff --git a/lib/internal/streams/readable.js b/lib/internal/streams/readable.js index 80798a35dcb34f..83f09194a6358d 100644 --- a/lib/internal/streams/readable.js +++ b/lib/internal/streams/readable.js @@ -316,6 +316,18 @@ function Readable(options) { if (!(this instanceof Readable)) return new Readable(options); + this._events = { + close: undefined, + error: undefined, + data: undefined, + end: undefined, + pause: undefined, + resume: undefined, + readable: undefined, + pipe: undefined, + unpipe: undefined, + }; + this._readableState = new ReadableState(options, this, false); if (options) { diff --git a/lib/internal/streams/writable.js b/lib/internal/streams/writable.js index 74573033eaa44f..69fb2be7f0c370 100644 --- a/lib/internal/streams/writable.js +++ b/lib/internal/streams/writable.js @@ -382,6 +382,14 @@ function Writable(options) { if (!(this instanceof Writable)) return new Writable(options); + this._events = { + close: undefined, + error: undefined, + prefinish: undefined, + finish: undefined, + drain: undefined, + }; + this._writableState = new WritableState(options, this, false); if (options) {