summaryrefslogtreecommitdiff
path: root/lib/buffer.js
diff options
context:
space:
mode:
authorRich Trott <rtrott@gmail.com>2017-03-31 22:48:35 -0700
committerJames M Snell <jasnell@gmail.com>2017-04-04 09:39:09 -0700
commit1e6186e9021dd7837a528dea75773749108b5cc4 (patch)
tree031e71a00f7bc173f36f1a404653b53e6533a20b /lib/buffer.js
parentdc7d9eb0a94c6ca97c5ee0a06a6c4ae84b5b8575 (diff)
downloadandroid-node-v8-1e6186e9021dd7837a528dea75773749108b5cc4.tar.gz
android-node-v8-1e6186e9021dd7837a528dea75773749108b5cc4.tar.bz2
android-node-v8-1e6186e9021dd7837a528dea75773749108b5cc4.zip
buffer,util: refactor for performance
internal/util.js definied toInteger() and toLength() but they were only used by buffer.js. Inlining these small functions results in a small but statistically-significant performance gain. PR-URL: https://github.com/nodejs/node/pull/12153 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Michaƫl Zasso <targos@protonmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'lib/buffer.js')
-rw-r--r--lib/buffer.js10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/buffer.js b/lib/buffer.js
index b9c6c01425..0df3ab297e 100644
--- a/lib/buffer.js
+++ b/lib/buffer.js
@@ -254,7 +254,9 @@ function fromArrayLike(obj) {
}
function fromArrayBuffer(obj, byteOffset, length) {
- byteOffset = internalUtil.toInteger(byteOffset);
+ // convert byteOffset to integer
+ byteOffset = +byteOffset;
+ byteOffset = byteOffset ? Math.trunc(byteOffset) : 0;
const maxLength = obj.byteLength - byteOffset;
@@ -264,7 +266,11 @@ function fromArrayBuffer(obj, byteOffset, length) {
if (length === undefined) {
length = maxLength;
} else {
- length = internalUtil.toLength(length);
+ // convert length to non-negative integer
+ length = +length;
+ length = length ? Math.trunc(length) : 0;
+ length = length <= 0 ? 0 : Math.min(length, Number.MAX_SAFE_INTEGER);
+
if (length > maxLength)
throw new RangeError("'length' is out of bounds");
}