From 5e88675b2fde128750ef346d85e15b7eb657016a Mon Sep 17 00:00:00 2001 From: Weijia Wang <381152119@qq.com> Date: Fri, 17 Aug 2018 16:33:45 +0800 Subject: [PATCH] buffer: move process.binding('buffer') to internalBinding --- lib/buffer.js | 2 +- lib/internal/bootstrap/node.js | 3 ++- lib/internal/buffer.js | 2 +- lib/internal/encoding.js | 2 +- lib/internal/errors.js | 2 +- lib/internal/util/comparisons.js | 2 +- lib/v8.js | 2 +- src/node_buffer.cc | 2 +- .../test-stringbytes-external-at-max.js | 4 +++- .../test-stringbytes-external-exceed-max-by-1-ascii.js | 4 +++- .../test-stringbytes-external-exceed-max-by-1-base64.js | 4 +++- .../test-stringbytes-external-exceed-max-by-1-binary.js | 5 +++-- .../test-stringbytes-external-exceed-max-by-1-hex.js | 4 +++- .../test-stringbytes-external-exceed-max-by-1-utf8.js | 4 +++- .../test-stringbytes-external-exceed-max-by-2.js | 4 +++- .../test-stringbytes-external-exceed-max.js | 4 +++- test/parallel/test-buffer-fill.js | 5 +++-- test/parallel/test-internal-errors.js | 4 +++- .../test-process-binding-internalbinding-whitelist.js | 1 + test/parallel/test-process-binding.js | 4 +++- test/sequential/test-fs-readfile-tostring-fail.js | 4 +++- 21 files changed, 46 insertions(+), 22 deletions(-) diff --git a/lib/buffer.js b/lib/buffer.js index c7ffa42a5487cb..af69f43735f26f 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -36,7 +36,7 @@ const { swap64: _swap64, kMaxLength, kStringMaxLength -} = process.binding('buffer'); +} = internalBinding('buffer'); const { isAnyArrayBuffer } = internalBinding('types'); const { customInspectSymbol, diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js index 2f638555ee28ce..f53ed55dcadb4a 100644 --- a/lib/internal/bootstrap/node.js +++ b/lib/internal/bootstrap/node.js @@ -413,7 +413,8 @@ 'url', 'spawn_sync', 'js_stream', - 'zlib']); + 'zlib', + 'buffer']); process.binding = function binding(name) { return internalBindingWhitelist.has(name) ? internalBinding(name) : diff --git a/lib/internal/buffer.js b/lib/internal/buffer.js index 3ea34af59e2072..61bdced4d63a58 100644 --- a/lib/internal/buffer.js +++ b/lib/internal/buffer.js @@ -1,6 +1,6 @@ 'use strict'; -const binding = process.binding('buffer'); +const binding = internalBinding('buffer'); const { ERR_BUFFER_OUT_OF_BOUNDS, ERR_INVALID_ARG_TYPE, diff --git a/lib/internal/encoding.js b/lib/internal/encoding.js index b2448144b0854a..77eca99202d033 100644 --- a/lib/internal/encoding.js +++ b/lib/internal/encoding.js @@ -29,7 +29,7 @@ const { const { encodeUtf8String -} = process.binding('buffer'); +} = internalBinding('buffer'); var Buffer; function lazyBuffer() { diff --git a/lib/internal/errors.js b/lib/internal/errors.js index 58eba742e08685..e8f1ed1a42ebce 100644 --- a/lib/internal/errors.js +++ b/lib/internal/errors.js @@ -20,7 +20,7 @@ const { UV_EAI_NODATA, UV_EAI_NONAME } = internalBinding('uv'); -const { kMaxLength } = process.binding('buffer'); +const { kMaxLength } = internalBinding('buffer'); const { defineProperty } = Object; // Lazily loaded diff --git a/lib/internal/util/comparisons.js b/lib/internal/util/comparisons.js index 3641f0cdc23cc4..9adffea09a14c5 100644 --- a/lib/internal/util/comparisons.js +++ b/lib/internal/util/comparisons.js @@ -1,6 +1,6 @@ 'use strict'; -const { compare } = process.binding('buffer'); +const { compare } = internalBinding('buffer'); const { isArrayBufferView } = require('internal/util/types'); const { isAnyArrayBuffer, diff --git a/lib/v8.js b/lib/v8.js index 1cba0464b1be67..b29304de5c08dc 100644 --- a/lib/v8.js +++ b/lib/v8.js @@ -20,7 +20,7 @@ const { Serializer: _Serializer, Deserializer: _Deserializer } = internalBinding('serdes'); -const { copy } = process.binding('buffer'); +const { copy } = internalBinding('buffer'); const { objectToString } = require('internal/util'); const { FastBuffer } = require('internal/buffer'); diff --git a/src/node_buffer.cc b/src/node_buffer.cc index e3a1515d6a3550..19841336e99a26 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -1104,4 +1104,4 @@ void Initialize(Local target, } // namespace Buffer } // namespace node -NODE_BUILTIN_MODULE_CONTEXT_AWARE(buffer, node::Buffer::Initialize) +NODE_MODULE_CONTEXT_AWARE_INTERNAL(buffer, node::Buffer::Initialize) diff --git a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-at-max.js b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-at-max.js index 4c074773a21fc2..820f71ec9e7a01 100644 --- a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-at-max.js +++ b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-at-max.js @@ -1,6 +1,8 @@ 'use strict'; +// Flags: --expose-internals const common = require('../../common'); +const { internalBinding } = require('internal/test/binding'); const skipMessage = 'intensive toString tests due to memory confinements'; if (!common.enoughTestMem) common.skip(skipMessage); @@ -10,7 +12,7 @@ const assert = require('assert'); // v8 fails silently if string length > v8::String::kMaxLength // v8::String::kMaxLength defined in v8.h -const kStringMaxLength = process.binding('buffer').kStringMaxLength; +const kStringMaxLength = internalBinding('buffer').kStringMaxLength; let buf; try { diff --git a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-ascii.js b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-ascii.js index c7cf1319e7c57c..7f5a8347956e43 100644 --- a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-ascii.js +++ b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-ascii.js @@ -1,6 +1,8 @@ 'use strict'; +// Flags: --expose-internals const common = require('../../common'); +const { internalBinding } = require('internal/test/binding'); const skipMessage = 'intensive toString tests due to memory confinements'; if (!common.enoughTestMem) common.skip(skipMessage); @@ -9,7 +11,7 @@ const binding = require(`./build/${common.buildType}/binding`); // v8 fails silently if string length > v8::String::kMaxLength // v8::String::kMaxLength defined in v8.h -const kStringMaxLength = process.binding('buffer').kStringMaxLength; +const kStringMaxLength = internalBinding('buffer').kStringMaxLength; let buf; try { diff --git a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-base64.js b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-base64.js index 920124e897de32..d7fe26814f7b24 100644 --- a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-base64.js +++ b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-base64.js @@ -1,6 +1,8 @@ 'use strict'; +// Flags: --expose-internals const common = require('../../common'); +const { internalBinding } = require('internal/test/binding'); const skipMessage = 'intensive toString tests due to memory confinements'; if (!common.enoughTestMem) common.skip(skipMessage); @@ -9,7 +11,7 @@ const binding = require(`./build/${common.buildType}/binding`); // v8 fails silently if string length > v8::String::kMaxLength // v8::String::kMaxLength defined in v8.h -const kStringMaxLength = process.binding('buffer').kStringMaxLength; +const kStringMaxLength = internalBinding('buffer').kStringMaxLength; let buf; try { diff --git a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-binary.js b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-binary.js index e4edd32797c2af..7e75ba1246662c 100644 --- a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-binary.js +++ b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-binary.js @@ -1,7 +1,8 @@ -// Flags: --expose-gc +// Flags: --expose-gc --expose-internals 'use strict'; const common = require('../../common'); +const { internalBinding } = require('internal/test/binding'); const skipMessage = 'intensive toString tests due to memory confinements'; if (!common.enoughTestMem) common.skip(skipMessage); @@ -11,7 +12,7 @@ const assert = require('assert'); // v8 fails silently if string length > v8::String::kMaxLength // v8::String::kMaxLength defined in v8.h -const kStringMaxLength = process.binding('buffer').kStringMaxLength; +const kStringMaxLength = internalBinding('buffer').kStringMaxLength; let buf; try { diff --git a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-hex.js b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-hex.js index 18fb46e0df95b8..57242399bb02b9 100644 --- a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-hex.js +++ b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-hex.js @@ -1,6 +1,8 @@ 'use strict'; +// Flags: --expose-internals const common = require('../../common'); +const { internalBinding } = require('internal/test/binding'); const skipMessage = 'intensive toString tests due to memory confinements'; if (!common.enoughTestMem) common.skip(skipMessage); @@ -9,7 +11,7 @@ const binding = require(`./build/${common.buildType}/binding`); // v8 fails silently if string length > v8::String::kMaxLength // v8::String::kMaxLength defined in v8.h -const kStringMaxLength = process.binding('buffer').kStringMaxLength; +const kStringMaxLength = internalBinding('buffer').kStringMaxLength; let buf; try { diff --git a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-utf8.js b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-utf8.js index 5f7221b591e8ac..4a0908290c1926 100644 --- a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-utf8.js +++ b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-1-utf8.js @@ -1,6 +1,8 @@ 'use strict'; +// Flags: --expose-internals const common = require('../../common'); +const { internalBinding } = require('internal/test/binding'); const skipMessage = 'intensive toString tests due to memory confinements'; if (!common.enoughTestMem) common.skip(skipMessage); @@ -10,7 +12,7 @@ const assert = require('assert'); // v8 fails silently if string length > v8::String::kMaxLength // v8::String::kMaxLength defined in v8.h -const kStringMaxLength = process.binding('buffer').kStringMaxLength; +const kStringMaxLength = internalBinding('buffer').kStringMaxLength; let buf; try { diff --git a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-2.js b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-2.js index 751c864bace06a..3c613a69fd3fcd 100644 --- a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-2.js +++ b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max-by-2.js @@ -1,6 +1,8 @@ 'use strict'; +// Flags: --expose-internals const common = require('../../common'); +const { internalBinding } = require('internal/test/binding'); const skipMessage = 'intensive toString tests due to memory confinements'; if (!common.enoughTestMem) common.skip(skipMessage); @@ -10,7 +12,7 @@ const assert = require('assert'); // v8 fails silently if string length > v8::String::kMaxLength // v8::String::kMaxLength defined in v8.h -const kStringMaxLength = process.binding('buffer').kStringMaxLength; +const kStringMaxLength = internalBinding('buffer').kStringMaxLength; let buf; try { diff --git a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max.js b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max.js index e46b5f24cce028..be571c5059ef8f 100644 --- a/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max.js +++ b/test/addons/stringbytes-external-exceed-max/test-stringbytes-external-exceed-max.js @@ -1,6 +1,8 @@ 'use strict'; +// Flags: --expose-internals const common = require('../../common'); +const { internalBinding } = require('internal/test/binding'); const skipMessage = 'intensive toString tests due to memory confinements'; if (!common.enoughTestMem) common.skip(skipMessage); @@ -9,7 +11,7 @@ const binding = require(`./build/${common.buildType}/binding`); // v8 fails silently if string length > v8::String::kMaxLength // v8::String::kMaxLength defined in v8.h -const kStringMaxLength = process.binding('buffer').kStringMaxLength; +const kStringMaxLength = internalBinding('buffer').kStringMaxLength; let buf; try { diff --git a/test/parallel/test-buffer-fill.js b/test/parallel/test-buffer-fill.js index 3daaa91d8f1bad..6a0a8adb7ae2b9 100644 --- a/test/parallel/test-buffer-fill.js +++ b/test/parallel/test-buffer-fill.js @@ -3,6 +3,7 @@ const common = require('../common'); const assert = require('assert'); const { codes: { ERR_OUT_OF_RANGE } } = require('internal/errors'); +const { internalBinding } = require('internal/test/binding'); const SIZE = 28; const buf1 = Buffer.allocUnsafe(SIZE); @@ -327,7 +328,7 @@ Buffer.alloc(8, ''); // Testing process.binding. Make sure "start" is properly checked for -1 wrap // around. assert.strictEqual( - process.binding('buffer').fill(Buffer.alloc(1), 1, -1, 0, 1), -2); + internalBinding('buffer').fill(Buffer.alloc(1), 1, -1, 0, 1), -2); // Make sure "end" is properly checked, even if it's magically mangled using // Symbol.toPrimitive. @@ -365,7 +366,7 @@ assert.strictEqual( // Testing process.binding. Make sure "end" is properly checked for -1 wrap // around. assert.strictEqual( - process.binding('buffer').fill(Buffer.alloc(1), 1, 1, -2, 1), -2); + internalBinding('buffer').fill(Buffer.alloc(1), 1, 1, -2, 1), -2); // Test that bypassing 'length' won't cause an abort. common.expectsError(() => { diff --git a/test/parallel/test-internal-errors.js b/test/parallel/test-internal-errors.js index 3a311819f9d9cd..7d5dcce0d40c6a 100644 --- a/test/parallel/test-internal-errors.js +++ b/test/parallel/test-internal-errors.js @@ -5,6 +5,8 @@ const { hijackStdout, restoreStdout, } = require('../common/hijackstdio'); + +const { internalBinding } = require('internal/test/binding'); const assert = require('assert'); const errors = require('internal/errors'); @@ -183,7 +185,7 @@ assert.strictEqual( 'Invalid asyncId value: undefined'); { - const { kMaxLength } = process.binding('buffer'); + const { kMaxLength } = internalBinding('buffer'); const error = new errors.codes.ERR_BUFFER_TOO_LARGE(); assert.strictEqual( error.message, diff --git a/test/parallel/test-process-binding-internalbinding-whitelist.js b/test/parallel/test-process-binding-internalbinding-whitelist.js index 56715799f88506..9cd12b54ea0f8a 100644 --- a/test/parallel/test-process-binding-internalbinding-whitelist.js +++ b/test/parallel/test-process-binding-internalbinding-whitelist.js @@ -15,3 +15,4 @@ assert(process.binding('contextify')); assert(process.binding('url')); assert(process.binding('spawn_sync')); assert(process.binding('js_stream')); +assert(process.binding('buffer')); diff --git a/test/parallel/test-process-binding.js b/test/parallel/test-process-binding.js index 3715826bb27615..05bb0e6aa07d41 100644 --- a/test/parallel/test-process-binding.js +++ b/test/parallel/test-process-binding.js @@ -1,6 +1,8 @@ 'use strict'; +// Flags: --expose-internals require('../common'); const assert = require('assert'); +const { internalBinding } = require('internal/test/binding'); assert.throws( function() { @@ -9,4 +11,4 @@ assert.throws( /No such module: test/ ); -process.binding('buffer'); +internalBinding('buffer'); diff --git a/test/sequential/test-fs-readfile-tostring-fail.js b/test/sequential/test-fs-readfile-tostring-fail.js index c5ed8559103d77..8dcab75e0fb119 100644 --- a/test/sequential/test-fs-readfile-tostring-fail.js +++ b/test/sequential/test-fs-readfile-tostring-fail.js @@ -1,6 +1,8 @@ 'use strict'; +// Flags: --expose-internals const common = require('../common'); +const { internalBinding } = require('internal/test/binding'); if (!common.enoughTestMem) common.skip('intensive toString tests due to memory confinements'); @@ -9,7 +11,7 @@ const assert = require('assert'); const fs = require('fs'); const path = require('path'); const cp = require('child_process'); -const kStringMaxLength = process.binding('buffer').kStringMaxLength; +const kStringMaxLength = internalBinding('buffer').kStringMaxLength; if (common.isAIX && (Number(cp.execSync('ulimit -f')) * 512) < kStringMaxLength) common.skip('intensive toString tests due to file size confinements');