From 6da87450edab54f82599aacba2e696460f361212 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Wed, 26 Jun 2024 06:24:48 -0700 Subject: [PATCH] perf: improve Buffer.from(buf) by 29x (#24341) --- ext/node/polyfills/internal/buffer.mjs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ext/node/polyfills/internal/buffer.mjs b/ext/node/polyfills/internal/buffer.mjs index a051965a39..de3568a830 100644 --- a/ext/node/polyfills/internal/buffer.mjs +++ b/ext/node/polyfills/internal/buffer.mjs @@ -229,11 +229,22 @@ function fromArrayLike(array) { return buf; } +function fromUint8Array(u8) { + const buf = new Uint8Array(u8.buffer, u8.byteOffset, u8.byteLength); + Object.setPrototypeOf(buf, Buffer.prototype); + return buf.slice(); +} + function fromObject(obj) { if (obj.length !== undefined || isAnyArrayBuffer(obj.buffer)) { if (typeof obj.length !== "number") { return createBuffer(0); } + + if (obj instanceof Uint8Array) { + return fromUint8Array(obj); + } + return fromArrayLike(obj); }