buffer: refactor create buffer
authorJackson Tian <shyvo1987@gmail.com>
Fri, 18 Dec 2015 02:09:15 +0000 (10:09 +0800)
committerMyles Borins <mborins@us.ibm.com>
Tue, 19 Jan 2016 19:52:32 +0000 (11:52 -0800)
Use createBuffer to reduce new Uint8Array()
and setPrototypeOf.

PR-URL: https://github.com/nodejs/node/pull/4340
Reviewed-By: Michaël Zasso <mic.besace@gmail.com>
Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
lib/buffer.js

index 31deb52..9c6b6c9 100644 (file)
@@ -19,13 +19,17 @@ binding.setupBufferJS(Buffer.prototype, bindingObj);
 const flags = bindingObj.flags;
 const kNoZeroFill = 0;
 
+function createBuffer(size) {
+  const ui8 = new Uint8Array(size);
+  Object.setPrototypeOf(ui8, Buffer.prototype);
+  return ui8;
+}
 
 function createPool() {
   poolSize = Buffer.poolSize;
   if (poolSize > 0)
     flags[kNoZeroFill] = 1;
-  allocPool = new Uint8Array(poolSize);
-  Object.setPrototypeOf(allocPool, Buffer.prototype);
+  allocPool = createBuffer(poolSize);
   poolOffset = 0;
 }
 createPool();
@@ -67,9 +71,7 @@ function SlowBuffer(length) {
     length = 0;
   if (length > 0)
     flags[kNoZeroFill] = 1;
-  const ui8 = new Uint8Array(+length);
-  Object.setPrototypeOf(ui8, Buffer.prototype);
-  return ui8;
+  return createBuffer(+length);
 }
 
 Object.setPrototypeOf(SlowBuffer.prototype, Uint8Array.prototype);
@@ -78,9 +80,7 @@ Object.setPrototypeOf(SlowBuffer, Uint8Array);
 
 function allocate(size) {
   if (size === 0) {
-    const ui8 = new Uint8Array(size);
-    Object.setPrototypeOf(ui8, Buffer.prototype);
-    return ui8;
+    return createBuffer(size);
   }
   if (size < (Buffer.poolSize >>> 1)) {
     if (size > (poolSize - poolOffset))
@@ -95,9 +95,7 @@ function allocate(size) {
     // being zero filled.
     if (size > 0)
       flags[kNoZeroFill] = 1;
-    const ui8 = new Uint8Array(size);
-    Object.setPrototypeOf(ui8, Buffer.prototype);
-    return ui8;
+    return createBuffer(size);
   }
 }