From 270ffb0fa7dc9a771f6a4029ee5b77ed490eb8e8 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Wed, 30 Jan 2019 21:07:11 +0100 Subject: [PATCH] src,lib: remove dead `process.binding()` code There are no non-internal builtin modules left, so this should be safe to remove to a large degree. PR-URL: https://github.com/nodejs/node/pull/25829 Reviewed-By: Joyee Cheung Reviewed-By: Colin Ihrig Reviewed-By: Anto Aravinth Reviewed-By: Gus Caplan Reviewed-By: Ben Noordhuis --- lib/internal/bootstrap/cache.js | 2 +- lib/internal/bootstrap/loaders.js | 10 +++----- lib/internal/crypto/diffiehellman.js | 2 +- lib/internal/crypto/hash.js | 2 +- src/node.cc | 4 ---- src/node_binding.cc | 36 +++------------------------- src/node_binding.h | 8 +------ 7 files changed, 10 insertions(+), 54 deletions(-) diff --git a/lib/internal/bootstrap/cache.js b/lib/internal/bootstrap/cache.js index 8273b6f27fd0b3..da8c4bda9ace80 100644 --- a/lib/internal/bootstrap/cache.js +++ b/lib/internal/bootstrap/cache.js @@ -9,7 +9,7 @@ const { NativeModule } = require('internal/bootstrap/loaders'); const { getCodeCache, compileFunction } = internalBinding('native_module'); -const { hasTracing, hasInspector } = process.binding('config'); +const { hasTracing, hasInspector } = internalBinding('config'); // Modules with source code compiled in js2c that // cannot be compiled with the code cache. diff --git a/lib/internal/bootstrap/loaders.js b/lib/internal/bootstrap/loaders.js index 1007b41069c723..d21fddbf5239a1 100644 --- a/lib/internal/bootstrap/loaders.js +++ b/lib/internal/bootstrap/loaders.js @@ -41,7 +41,7 @@ // This file is compiled as if it's wrapped in a function with arguments // passed by node::RunBootstrapping() -/* global process, getBinding, getLinkedBinding, getInternalBinding */ +/* global process, getLinkedBinding, getInternalBinding */ /* global experimentalModules, exposeInternals, primordials */ const { @@ -108,12 +108,8 @@ const internalBindingWhitelist = new SafeSet([ if (internalBindingWhitelist.has(module)) { return internalBinding(module); } - let mod = bindingObj[module]; - if (typeof mod !== 'object') { - mod = bindingObj[module] = getBinding(module); - moduleLoadList.push(`Binding ${module}`); - } - return mod; + // eslint-disable-next-line no-restricted-syntax + throw new Error(`No such module: ${module}`); }; process._linkedBinding = function _linkedBinding(module) { diff --git a/lib/internal/crypto/diffiehellman.js b/lib/internal/crypto/diffiehellman.js index 81204cfda3e676..3bfc531455ca1c 100644 --- a/lib/internal/crypto/diffiehellman.js +++ b/lib/internal/crypto/diffiehellman.js @@ -19,7 +19,7 @@ const { DiffieHellmanGroup: _DiffieHellmanGroup, ECDH: _ECDH, ECDHConvertKey: _ECDHConvertKey -} = process.binding('crypto'); +} = internalBinding('crypto'); const { POINT_CONVERSION_COMPRESSED, POINT_CONVERSION_HYBRID, diff --git a/lib/internal/crypto/hash.js b/lib/internal/crypto/hash.js index 713ded3d1815a0..d486d83e9128ad 100644 --- a/lib/internal/crypto/hash.js +++ b/lib/internal/crypto/hash.js @@ -3,7 +3,7 @@ const { Hash: _Hash, Hmac: _Hmac -} = process.binding('crypto'); +} = internalBinding('crypto'); const { getDefaultEncoding, diff --git a/src/node.cc b/src/node.cc index 8593daeefcfd35..62f4550265c292 100644 --- a/src/node.cc +++ b/src/node.cc @@ -282,7 +282,6 @@ MaybeLocal RunBootstrapping(Environment* env) { // Create binding loaders std::vector> loaders_params = { env->process_string(), - FIXED_ONE_BYTE_STRING(isolate, "getBinding"), FIXED_ONE_BYTE_STRING(isolate, "getLinkedBinding"), FIXED_ONE_BYTE_STRING(isolate, "getInternalBinding"), // --experimental-modules @@ -292,9 +291,6 @@ MaybeLocal RunBootstrapping(Environment* env) { env->primordials_string()}; std::vector> loaders_args = { process, - env->NewFunctionTemplate(binding::GetBinding) - ->GetFunction(context) - .ToLocalChecked(), env->NewFunctionTemplate(binding::GetLinkedBinding) ->GetFunction(context) .ToLocalChecked(), diff --git a/src/node_binding.cc b/src/node_binding.cc index 85f3c19e690182..08d55567d4904a 100644 --- a/src/node_binding.cc +++ b/src/node_binding.cc @@ -84,7 +84,7 @@ // function for each built-in modules explicitly in // binding::RegisterBuiltinModules(). This is only forward declaration. // The definitions are in each module's implementation when calling -// the NODE_BUILTIN_MODULE_CONTEXT_AWARE. +// the NODE_MODULE_CONTEXT_AWARE_INTERNAL. #define V(modname) void _register_##modname(); NODE_BUILTIN_MODULES(V) #undef V @@ -101,7 +101,6 @@ using v8::String; using v8::Value; // Globals per process -static node_module* modlist_builtin; static node_module* modlist_internal; static node_module* modlist_linked; static node_module* modlist_addon; @@ -114,10 +113,7 @@ bool node_is_initialized = false; extern "C" void node_module_register(void* m) { struct node_module* mp = reinterpret_cast(m); - if (mp->nm_flags & NM_F_BUILTIN) { - mp->nm_link = modlist_builtin; - modlist_builtin = mp; - } else if (mp->nm_flags & NM_F_INTERNAL) { + if (mp->nm_flags & NM_F_INTERNAL) { mp->nm_link = modlist_internal; modlist_internal = mp; } else if (!node_is_initialized) { @@ -295,11 +291,7 @@ void DLOpen(const FunctionCallbackInfo& args) { env->ThrowError(errmsg); return false; } - if (mp->nm_flags & NM_F_BUILTIN) { - dlib->Close(); - env->ThrowError("Built-in module self-registered."); - return false; - } + CHECK_EQ(mp->nm_flags & NM_F_BUILTIN, 0); mp->nm_dso_handle = dlib->handle_; mp->nm_link = modlist_addon; @@ -335,9 +327,6 @@ inline struct node_module* FindModule(struct node_module* list, return mp; } -node_module* get_builtin_module(const char* name) { - return FindModule(modlist_builtin, name, NM_F_BUILTIN); -} node_module* get_internal_module(const char* name) { return FindModule(modlist_internal, name, NM_F_INTERNAL); } @@ -363,25 +352,6 @@ static void ThrowIfNoSuchModule(Environment* env, const char* module_v) { env->ThrowError(errmsg); } -void GetBinding(const FunctionCallbackInfo& args) { - Environment* env = Environment::GetCurrent(args); - - CHECK(args[0]->IsString()); - - Local module = args[0].As(); - node::Utf8Value module_v(env->isolate(), module); - - node_module* mod = get_builtin_module(*module_v); - Local exports; - if (mod != nullptr) { - exports = InitModule(env, mod, module); - } else { - return ThrowIfNoSuchModule(env, *module_v); - } - - args.GetReturnValue().Set(exports); -} - void GetInternalBinding(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); diff --git a/src/node_binding.h b/src/node_binding.h index 7d79dae80d8e39..d73e18548ff47e 100644 --- a/src/node_binding.h +++ b/src/node_binding.h @@ -15,7 +15,7 @@ #include "v8.h" enum { - NM_F_BUILTIN = 1 << 0, + NM_F_BUILTIN = 1 << 0, // Unused. NM_F_LINKED = 1 << 1, NM_F_INTERNAL = 1 << 2, }; @@ -33,9 +33,6 @@ enum { nullptr}; \ void _register_##modname() { node_module_register(&_module); } -#define NODE_BUILTIN_MODULE_CONTEXT_AWARE(modname, regfunc) \ - NODE_MODULE_CONTEXT_AWARE_CPP(modname, regfunc, nullptr, NM_F_BUILTIN) - void napi_module_register_by_symbol(v8::Local exports, v8::Local module, v8::Local context, @@ -83,7 +80,6 @@ class DLib { // use the __attribute__((constructor)). Need to // explicitly call the _register* functions. void RegisterBuiltinModules(); -void GetBinding(const v8::FunctionCallbackInfo& args); void GetInternalBinding(const v8::FunctionCallbackInfo& args); void GetLinkedBinding(const v8::FunctionCallbackInfo& args); void DLOpen(const v8::FunctionCallbackInfo& args); @@ -92,7 +88,5 @@ void DLOpen(const v8::FunctionCallbackInfo& args); } // namespace node -#include "node_binding.h" - #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_NODE_BINDING_H_