The term "native module" dates back to some of the oldest code in the code base. Within the context of Node.js core it usually refers to modules that are native to Node.js (e.g. fs, http), but it can cause confusion for people who don't work on this part of the code base, as "native module" can also refer to native addons - which is even the case in some of the API docs and error messages. This patch tries to make the usage of these terms more consistent. Now within the context of Node.js core: - JavaScript scripts that are built-in to Node.js are now referred to as "built-in(s)". If they are available as modules, they can also be referred to as "built-in module(s)". - Dynamically-linked shared objects that are loaded into the Node.js processes are referred to as "addons". We will try to avoid using the term "native modules" because it could be ambiguous. Changes in this patch: File names: - node_native_module.h -> node_builtins.h, - node_native_module.cc -> node_builtins.cc C++ binding names: - `native_module` -> `builtins` `node::Environment`: - `native_modules_without_cache` -> `builtins_without_cache` - `native_modules_with_cache` -> `builtins_with_cache` - `native_modules_in_snapshot` -> `builtins_in_cache` - `native_module_require` -> `builtin_module_require` `node::EnvSerializeInfo`: - `native_modules` -> `builtins `node::native_module::NativeModuleLoader`: - `native_module` namespace -> `builtins` namespace - `NativeModuleLoader` -> `BuiltinLoader` - `NativeModuleRecordMap` -> `BuiltinSourceMap` - `NativeModuleCacheMap` -> `BuiltinCodeCacheMap` - `ModuleIds` -> `BuiltinIds` - `ModuleCategories` -> `BuiltinCategories` - `LoadBuiltinModuleSource` -> `LoadBuiltinSource` `loader.js`: - `NativeModule` -> `BuiltinModule` (the `NativeModule` name used in `process.moduleLoadList` is kept for compatibility) And other clarifications in the documentation and comments. PR-URL: https://github.com/nodejs/node/pull/44135 Backport-PR-URL: https://github.com/nodejs/node/pull/45663 Fixes: https://github.com/nodejs/node/issues/44036 Reviewed-By: Jacob Smith <jacob@frende.me> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Chengzhong Wu <legendecas@gmail.com> Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Jan Krems <jan.krems@gmail.com>
73 lines
1.9 KiB
C++
73 lines
1.9 KiB
C++
#include <cstdio>
|
|
#include <fstream>
|
|
#include <iostream>
|
|
#include <sstream>
|
|
#include <string>
|
|
|
|
#include "cache_builder.h"
|
|
#include "debug_utils-inl.h"
|
|
#include "libplatform/libplatform.h"
|
|
#include "v8.h"
|
|
|
|
using node::builtins::CodeCacheBuilder;
|
|
using v8::ArrayBuffer;
|
|
using v8::Context;
|
|
using v8::HandleScope;
|
|
using v8::Isolate;
|
|
using v8::Local;
|
|
|
|
#ifdef _WIN32
|
|
#include <VersionHelpers.h>
|
|
#include <WinError.h>
|
|
#include <windows.h>
|
|
|
|
int wmain(int argc, wchar_t* argv[]) {
|
|
#else // UNIX
|
|
int main(int argc, char* argv[]) {
|
|
argv = uv_setup_args(argc, argv);
|
|
#endif // _WIN32
|
|
|
|
v8::V8::SetFlagsFromString("--random_seed=42");
|
|
v8::V8::SetFlagsFromString("--harmony-import-assertions");
|
|
|
|
if (argc < 2) {
|
|
std::cerr << "Usage: " << argv[0] << " <path/to/output.cc>\n";
|
|
return 1;
|
|
}
|
|
|
|
std::ofstream out;
|
|
out.open(argv[1], std::ios::out | std::ios::binary);
|
|
if (!out.is_open()) {
|
|
std::cerr << "Cannot open " << argv[1] << "\n";
|
|
return 1;
|
|
}
|
|
|
|
node::per_process::enabled_debug_list.Parse(nullptr);
|
|
|
|
std::unique_ptr<v8::Platform> platform = v8::platform::NewDefaultPlatform();
|
|
v8::V8::InitializePlatform(platform.get());
|
|
v8::V8::Initialize();
|
|
|
|
// Create a new Isolate and make it the current one.
|
|
Isolate::CreateParams create_params;
|
|
create_params.array_buffer_allocator_shared.reset(
|
|
ArrayBuffer::Allocator::NewDefaultAllocator());
|
|
Isolate* isolate = Isolate::New(create_params);
|
|
{
|
|
Isolate::Scope isolate_scope(isolate);
|
|
v8::HandleScope handle_scope(isolate);
|
|
v8::Local<v8::Context> context = v8::Context::New(isolate);
|
|
v8::Context::Scope context_scope(context);
|
|
|
|
// The command line flags are part of the code cache's checksum so reset
|
|
// --random_seed= to its default value before creating the code cache.
|
|
v8::V8::SetFlagsFromString("--random_seed=0");
|
|
std::string cache = CodeCacheBuilder::Generate(context);
|
|
out << cache;
|
|
out.close();
|
|
}
|
|
isolate->Dispose();
|
|
|
|
v8::V8::ShutdownPlatform();
|
|
return 0;
|
|
}
|