From 627f10937ef351b05c0b86805f501e10b54614d9 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Mon, 15 Oct 2018 01:41:32 +0200 Subject: [PATCH] src,lib: move `natives` and `constants` to `internalBinding()` Refs: https://github.com/nodejs/node/issues/22160 PR-URL: https://github.com/nodejs/node/pull/23663 Reviewed-By: Trivikram Kamat Reviewed-By: Weijia Wang Reviewed-By: Colin Ihrig Reviewed-By: Sakthipriyan Vairamani Reviewed-By: Denys Otrishko Reviewed-By: Refael Ackermann --- lib/_tls_common.js | 2 +- lib/constants.js | 2 +- lib/crypto.js | 2 +- lib/dgram.js | 2 +- lib/fs.js | 2 +- lib/internal/bootstrap/loaders.js | 6 +++--- lib/internal/bootstrap/node.js | 4 +++- lib/internal/crypto/cipher.js | 2 +- lib/internal/crypto/diffiehellman.js | 2 +- lib/internal/crypto/sig.js | 2 +- lib/internal/crypto/util.js | 2 +- lib/internal/fs/promises.js | 2 +- lib/internal/fs/utils.js | 2 +- lib/internal/process/main_thread_only.js | 2 +- lib/internal/process/per_thread.js | 2 +- lib/internal/util.js | 2 +- lib/internal/v8_prof_processor.js | 2 +- lib/os.js | 2 +- lib/tls.js | 2 +- lib/zlib.js | 2 +- src/node.cc | 16 ++++++++-------- 21 files changed, 32 insertions(+), 30 deletions(-) diff --git a/lib/_tls_common.js b/lib/_tls_common.js index b8e68eec153fe0..2a880450677258 100644 --- a/lib/_tls_common.js +++ b/lib/_tls_common.js @@ -29,7 +29,7 @@ const { ERR_INVALID_ARG_TYPE } = require('internal/errors').codes; -const { SSL_OP_CIPHER_SERVER_PREFERENCE } = process.binding('constants').crypto; +const { SSL_OP_CIPHER_SERVER_PREFERENCE } = internalBinding('constants').crypto; // Lazily loaded from internal/crypto/util. let toBuf = null; diff --git a/lib/constants.js b/lib/constants.js index a4c2ca6fb38ba8..44c7388580d440 100644 --- a/lib/constants.js +++ b/lib/constants.js @@ -25,7 +25,7 @@ // towards using the specific constants exposed by the individual modules on // which they are most relevant. // Deprecation Code: DEP0008 -const constants = process.binding('constants'); +const constants = internalBinding('constants'); Object.assign(exports, constants.os.dlopen, constants.os.errno, diff --git a/lib/crypto.js b/lib/crypto.js index 6d7330134b33fa..13987f9e03e230 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -34,7 +34,7 @@ const { ERR_CRYPTO_FIPS_FORCED, ERR_CRYPTO_FIPS_UNAVAILABLE } = require('internal/errors').codes; -const constants = process.binding('constants').crypto; +const constants = internalBinding('constants').crypto; const { getOptions } = internalBinding('options'); const pendingDeprecation = getOptions('--pending-deprecation'); const { diff --git a/lib/dgram.js b/lib/dgram.js index c4819f0eb0f6a8..549b6dd738d0fe 100644 --- a/lib/dgram.js +++ b/lib/dgram.js @@ -52,7 +52,7 @@ const { defaultTriggerAsyncIdScope, symbols: { async_id_symbol, owner_symbol } } = require('internal/async_hooks'); -const { UV_UDP_REUSEADDR } = process.binding('constants').os; +const { UV_UDP_REUSEADDR } = internalBinding('constants').os; const { UDP, SendWrap } = internalBinding('udp_wrap'); diff --git a/lib/fs.js b/lib/fs.js index 3302cfe0bf756a..bf964f5e9930ca 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -24,7 +24,7 @@ 'use strict'; -const { fs: constants } = process.binding('constants'); +const { fs: constants } = internalBinding('constants'); const { S_IFIFO, S_IFLNK, diff --git a/lib/internal/bootstrap/loaders.js b/lib/internal/bootstrap/loaders.js index b3072a02943b6d..dff6ce661a4640 100644 --- a/lib/internal/bootstrap/loaders.js +++ b/lib/internal/bootstrap/loaders.js @@ -123,7 +123,7 @@ this.script = null; // The ContextifyScript of the module } - NativeModule._source = getBinding('natives'); + NativeModule._source = getInternalBinding('natives'); NativeModule._cache = {}; const config = getBinding('config'); @@ -256,12 +256,12 @@ // 1. `internalBinding('code_cache_hash')` must be in sync with // `internalBinding('code_cache')` (same C++ file) // 2. `internalBinding('natives_hash')` must be in sync with - // `process.binding('natives')` (same C++ file) + // `internalBinding('natives')` (same C++ file) // 3. If `internalBinding('natives_hash')` is in sync with // `internalBinding('natives_hash')`, then the (unwrapped) // code used to generate `internalBinding('code_cache')` // should be in sync with the (unwrapped) code in - // `process.binding('natives')` + // `internalBinding('natives')` // There will be, however, false positives if the wrapper used // to generate the cache is different from the one used at run time, // and the length of the wrapper somehow stays the same. diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js index f53ed55dcadb4a..f0ca57afd4a758 100644 --- a/lib/internal/bootstrap/node.js +++ b/lib/internal/bootstrap/node.js @@ -414,7 +414,9 @@ 'spawn_sync', 'js_stream', 'zlib', - 'buffer']); + 'buffer', + 'natives', + 'constants']); process.binding = function binding(name) { return internalBindingWhitelist.has(name) ? internalBinding(name) : diff --git a/lib/internal/crypto/cipher.js b/lib/internal/crypto/cipher.js index 2d7ddede578b35..a2e973ed849f10 100644 --- a/lib/internal/crypto/cipher.js +++ b/lib/internal/crypto/cipher.js @@ -3,7 +3,7 @@ const { RSA_PKCS1_OAEP_PADDING, RSA_PKCS1_PADDING -} = process.binding('constants').crypto; +} = internalBinding('constants').crypto; const { ERR_CRYPTO_INVALID_STATE, diff --git a/lib/internal/crypto/diffiehellman.js b/lib/internal/crypto/diffiehellman.js index 02142d4b1f0b2d..4f5bcbad972b26 100644 --- a/lib/internal/crypto/diffiehellman.js +++ b/lib/internal/crypto/diffiehellman.js @@ -24,7 +24,7 @@ const { POINT_CONVERSION_COMPRESSED, POINT_CONVERSION_HYBRID, POINT_CONVERSION_UNCOMPRESSED -} = process.binding('constants').crypto; +} = internalBinding('constants').crypto; const DH_GENERATOR = 2; diff --git a/lib/internal/crypto/sig.js b/lib/internal/crypto/sig.js index 86b43341bd029c..43033345afa545 100644 --- a/lib/internal/crypto/sig.js +++ b/lib/internal/crypto/sig.js @@ -9,7 +9,7 @@ const { Sign: _Sign, Verify: _Verify } = internalBinding('crypto'); const { RSA_PSS_SALTLEN_AUTO, RSA_PKCS1_PADDING -} = process.binding('constants').crypto; +} = internalBinding('constants').crypto; const { getDefaultEncoding, kHandle, diff --git a/lib/internal/crypto/util.js b/lib/internal/crypto/util.js index 496f195c731015..ff5bfce4a76a49 100644 --- a/lib/internal/crypto/util.js +++ b/lib/internal/crypto/util.js @@ -10,7 +10,7 @@ const { const { ENGINE_METHOD_ALL -} = process.binding('constants').crypto; +} = internalBinding('constants').crypto; const { ERR_CRYPTO_ENGINE_UNKNOWN, diff --git a/lib/internal/fs/promises.js b/lib/internal/fs/promises.js index 6cae7d1a21ff8d..0fecb206237100 100644 --- a/lib/internal/fs/promises.js +++ b/lib/internal/fs/promises.js @@ -6,7 +6,7 @@ const { O_WRONLY, S_IFMT, S_IFREG -} = process.binding('constants').fs; +} = internalBinding('constants').fs; const binding = process.binding('fs'); const { Buffer, kMaxLength } = require('buffer'); const { diff --git a/lib/internal/fs/utils.js b/lib/internal/fs/utils.js index c614cb4880d872..0df13354acc628 100644 --- a/lib/internal/fs/utils.js +++ b/lib/internal/fs/utils.js @@ -43,7 +43,7 @@ const { UV_DIRENT_SOCKET, UV_DIRENT_CHAR, UV_DIRENT_BLOCK -} = process.binding('constants').fs; +} = internalBinding('constants').fs; const isWindows = process.platform === 'win32'; diff --git a/lib/internal/process/main_thread_only.js b/lib/internal/process/main_thread_only.js index 49910fafd7ebee..b8e518f6a1d388 100644 --- a/lib/internal/process/main_thread_only.js +++ b/lib/internal/process/main_thread_only.js @@ -118,7 +118,7 @@ function setupPosixMethods(_initgroups, _setegid, _seteuid, // Worker threads don't receive signals. function setupSignalHandlers(internalBinding) { - const constants = process.binding('constants').os.signals; + const constants = internalBinding('constants').os.signals; const signalWraps = Object.create(null); let Signal; diff --git a/lib/internal/process/per_thread.js b/lib/internal/process/per_thread.js index 9397ce3f591ecd..fa3421a3a32e1d 100644 --- a/lib/internal/process/per_thread.js +++ b/lib/internal/process/per_thread.js @@ -17,7 +17,7 @@ const { } } = require('internal/errors'); const util = require('util'); -const constants = process.binding('constants').os.signals; +const constants = internalBinding('constants').os.signals; const { deprecate } = require('internal/util'); function setupAssert() { diff --git a/lib/internal/util.js b/lib/internal/util.js index 745b69381d4a89..3524b9e1d62112 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -5,7 +5,7 @@ const { ERR_NO_CRYPTO, ERR_UNKNOWN_SIGNAL } = require('internal/errors').codes; -const { signals } = process.binding('constants').os; +const { signals } = internalBinding('constants').os; const { getHiddenValue, setHiddenValue, diff --git a/lib/internal/v8_prof_processor.js b/lib/internal/v8_prof_processor.js index 6c7a4db6641935..572b8074c46f1e 100644 --- a/lib/internal/v8_prof_processor.js +++ b/lib/internal/v8_prof_processor.js @@ -19,7 +19,7 @@ const scriptFiles = [ var script = ''; scriptFiles.forEach(function(s) { - script += process.binding('natives')[s] + '\n'; + script += internalBinding('natives')[s] + '\n'; }); const tickArguments = []; diff --git a/lib/os.js b/lib/os.js index 86a24b7c6261eb..797201c4b5e732 100644 --- a/lib/os.js +++ b/lib/os.js @@ -22,7 +22,7 @@ 'use strict'; const { pushValToArrayMax, safeGetenv } = internalBinding('util'); -const constants = process.binding('constants').os; +const constants = internalBinding('constants').os; const { deprecate } = require('internal/util'); const isWindows = process.platform === 'win32'; diff --git a/lib/tls.js b/lib/tls.js index 57228ca273cb98..3335632c933e1f 100644 --- a/lib/tls.js +++ b/lib/tls.js @@ -46,7 +46,7 @@ exports.CLIENT_RENEG_LIMIT = 3; exports.CLIENT_RENEG_WINDOW = 600; exports.DEFAULT_CIPHERS = - process.binding('constants').crypto.defaultCipherList; + internalBinding('constants').crypto.defaultCipherList; exports.DEFAULT_ECDH_CURVE = 'auto'; diff --git a/lib/zlib.js b/lib/zlib.js index c97da5dd302928..61f57429d63586 100644 --- a/lib/zlib.js +++ b/lib/zlib.js @@ -45,7 +45,7 @@ const { } = require('buffer'); const { owner_symbol } = require('internal/async_hooks').symbols; -const constants = process.binding('constants').zlib; +const constants = internalBinding('constants').zlib; const { Z_NO_FLUSH, Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH, Z_MIN_CHUNK, Z_MIN_WINDOWBITS, Z_MAX_WINDOWBITS, Z_MIN_LEVEL, Z_MAX_LEVEL, diff --git a/src/node.cc b/src/node.cc index bab251ada3a429..c24dfce0abd0f4 100644 --- a/src/node.cc +++ b/src/node.cc @@ -1542,14 +1542,6 @@ static void GetBinding(const FunctionCallbackInfo& args) { Local exports; if (mod != nullptr) { exports = InitModule(env, mod, module); - } else if (!strcmp(*module_v, "constants")) { - exports = Object::New(env->isolate()); - CHECK(exports->SetPrototype(env->context(), - Null(env->isolate())).FromJust()); - DefineConstants(env->isolate(), exports); - } else if (!strcmp(*module_v, "natives")) { - exports = Object::New(env->isolate()); - DefineJavaScript(env, exports); } else { return ThrowIfNoSuchModule(env, *module_v); } @@ -1569,6 +1561,14 @@ static void GetInternalBinding(const FunctionCallbackInfo& args) { node_module* mod = get_internal_module(*module_v); if (mod != nullptr) { exports = InitModule(env, mod, module); + } else if (!strcmp(*module_v, "constants")) { + exports = Object::New(env->isolate()); + CHECK(exports->SetPrototype(env->context(), + Null(env->isolate())).FromJust()); + DefineConstants(env->isolate(), exports); + } else if (!strcmp(*module_v, "natives")) { + exports = Object::New(env->isolate()); + DefineJavaScript(env, exports); } else if (!strcmp(*module_v, "code_cache")) { // internalBinding('code_cache') exports = Object::New(env->isolate());