mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
src: use AliasedUint32Array for encodeInto results
Getting the buffer from a TypedArray created from the JS land incurs a copy. For encodeInto() results we can just use an AliasedArray and let the binding always own the store. PR-URL: https://github.com/nodejs/node/pull/46658 Reviewed-By: Darshan Sen <raisinten@gmail.com>
This commit is contained in:
@@ -13,7 +13,6 @@ const {
|
||||
StringPrototypeSlice,
|
||||
Symbol,
|
||||
SymbolToStringTag,
|
||||
Uint32Array,
|
||||
Uint8Array,
|
||||
} = primordials;
|
||||
|
||||
@@ -49,12 +48,12 @@ const {
|
||||
validateString,
|
||||
validateObject,
|
||||
} = require('internal/validators');
|
||||
|
||||
const binding = internalBinding('encoding_binding');
|
||||
const {
|
||||
encodeInto,
|
||||
encodeUtf8String,
|
||||
decodeUTF8,
|
||||
} = internalBinding('encoding_binding');
|
||||
} = binding;
|
||||
|
||||
const { Buffer } = require('buffer');
|
||||
|
||||
@@ -318,8 +317,6 @@ function getEncodingFromLabel(label) {
|
||||
return encodings.get(trimAsciiWhitespace(label.toLowerCase()));
|
||||
}
|
||||
|
||||
const encodeIntoResults = new Uint32Array(2);
|
||||
|
||||
class TextEncoder {
|
||||
constructor() {
|
||||
this[kEncoder] = true;
|
||||
@@ -340,8 +337,12 @@ class TextEncoder {
|
||||
validateString(src, 'src');
|
||||
if (!dest || !isUint8Array(dest))
|
||||
throw new ERR_INVALID_ARG_TYPE('dest', 'Uint8Array', dest);
|
||||
encodeInto(src, dest, encodeIntoResults);
|
||||
return { read: encodeIntoResults[0], written: encodeIntoResults[1] };
|
||||
|
||||
encodeInto(src, dest);
|
||||
// We need to read from the binding here since the buffer gets refreshed
|
||||
// from the snapshot.
|
||||
const { 0: read, 1: written } = binding.encodeIntoResults;
|
||||
return { read, written };
|
||||
}
|
||||
|
||||
[inspect](depth, opts) {
|
||||
|
||||
Reference in New Issue
Block a user