summaryrefslogtreecommitdiff
path: root/lib/buffer.js
diff options
context:
space:
mode:
authorAnatoli Papirovski <apapirovski@mac.com>2017-09-04 08:53:43 -0400
committerRuben Bridgewater <ruben@bridgewater.de>2017-09-11 00:05:28 -0300
commitfc1fa4e2c49aa060b97b139ff02b5be8037dba94 (patch)
tree080bfd70b0b6aa8889727086335f1e9f1e65be3d /lib/buffer.js
parent16a81cd2c0478bdc4b6261b69644e05f11c90d55 (diff)
downloadandroid-node-v8-fc1fa4e2c49aa060b97b139ff02b5be8037dba94.tar.gz
android-node-v8-fc1fa4e2c49aa060b97b139ff02b5be8037dba94.tar.bz2
android-node-v8-fc1fa4e2c49aa060b97b139ff02b5be8037dba94.zip
buffer: improve Buffer.from performance
Using == null in code paths that are expected to mostly receive objects, arrays or other more complex data types is not ideal because typecasting these types is very slow. Change to instead check === null || === undefined. Also move one variable assignment in fromString after an if condition that doesn't need it (and returns if truthy). PR-URL: https://github.com/nodejs/node/pull/15178 Refs: https://jsperf.com/triple-equals-vs-double-equals/3 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Diffstat (limited to 'lib/buffer.js')
-rw-r--r--lib/buffer.js6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/buffer.js b/lib/buffer.js
index ae9ec5fc8e..7a44ca0f26 100644
--- a/lib/buffer.js
+++ b/lib/buffer.js
@@ -193,7 +193,7 @@ Buffer.from = function from(value, encodingOrOffset, length) {
if (isAnyArrayBuffer(value))
return fromArrayBuffer(value, encodingOrOffset, length);
- if (value == null) {
+ if (value === null || value === undefined) {
throw new errors.TypeError(
'ERR_INVALID_ARG_TYPE',
'first argument',
@@ -208,7 +208,7 @@ Buffer.from = function from(value, encodingOrOffset, length) {
);
const valueOf = value.valueOf && value.valueOf();
- if (valueOf != null && valueOf !== value)
+ if (valueOf !== null && valueOf !== undefined && valueOf !== value)
return Buffer.from(valueOf, encodingOrOffset, length);
var b = fromObject(value);
@@ -322,9 +322,9 @@ function allocate(size) {
function fromString(string, encoding) {
var length;
if (typeof encoding !== 'string' || encoding.length === 0) {
- encoding = 'utf8';
if (string.length === 0)
return new FastBuffer();
+ encoding = 'utf8';
length = byteLengthUtf8(string);
} else {
length = byteLength(string, encoding, true);