build: improve embedded code-cache detection
PR-URL: https://github.com/nodejs/node/pull/27311 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com>
This commit is contained in:
parent
49d3d11ba7
commit
5aaf666b3b
@ -1051,7 +1051,9 @@ def configure_node(o):
|
|||||||
o['variables']['debug_nghttp2'] = 'false'
|
o['variables']['debug_nghttp2'] = 'false'
|
||||||
|
|
||||||
o['variables']['node_no_browser_globals'] = b(options.no_browser_globals)
|
o['variables']['node_no_browser_globals'] = b(options.no_browser_globals)
|
||||||
o['variables']['node_code_cache_path'] = 'yes'
|
# TODO(refack): fix this when implementing embedded code-cache when cross-compiling.
|
||||||
|
if o['variables']['want_separate_host_toolset'] == 0:
|
||||||
|
o['variables']['node_code_cache_path'] = 'yes'
|
||||||
o['variables']['node_shared'] = b(options.shared)
|
o['variables']['node_shared'] = b(options.shared)
|
||||||
node_module_version = getmoduleversion.get_version()
|
node_module_version = getmoduleversion.get_version()
|
||||||
|
|
||||||
|
@ -244,7 +244,8 @@ Object.defineProperty(process, 'features', {
|
|||||||
tls_alpn: hasOpenSSL,
|
tls_alpn: hasOpenSSL,
|
||||||
tls_sni: hasOpenSSL,
|
tls_sni: hasOpenSSL,
|
||||||
tls_ocsp: hasOpenSSL,
|
tls_ocsp: hasOpenSSL,
|
||||||
tls: hasOpenSSL
|
tls: hasOpenSSL,
|
||||||
|
cached_builtins: config.hasCachedBuiltins,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
#include "node_native_module_env.h"
|
#include "node_native_module_env.h"
|
||||||
|
|
||||||
// This is supposed to be generated by tools/generate_code_cache.js
|
// This is supposed to be generated by tools/generate_code_cache.js
|
||||||
@ -7,6 +6,8 @@
|
|||||||
namespace node {
|
namespace node {
|
||||||
namespace native_module {
|
namespace native_module {
|
||||||
|
|
||||||
|
const bool has_code_cache = false;
|
||||||
|
|
||||||
// The generated source code would insert <std::string, UnionString> pairs
|
// The generated source code would insert <std::string, UnionString> pairs
|
||||||
// into NativeModuleLoader::instance.code_cache_.
|
// into NativeModuleLoader::instance.code_cache_.
|
||||||
void NativeModuleEnv::InitializeCodeCache() {}
|
void NativeModuleEnv::InitializeCodeCache() {}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "env-inl.h"
|
#include "env-inl.h"
|
||||||
#include "node.h"
|
#include "node.h"
|
||||||
#include "node_i18n.h"
|
#include "node_i18n.h"
|
||||||
|
#include "node_native_module_env.h"
|
||||||
#include "node_options.h"
|
#include "node_options.h"
|
||||||
#include "util-inl.h"
|
#include "util-inl.h"
|
||||||
|
|
||||||
@ -73,11 +74,14 @@ static void Initialize(Local<Object> target,
|
|||||||
|
|
||||||
READONLY_PROPERTY(target,
|
READONLY_PROPERTY(target,
|
||||||
"bits",
|
"bits",
|
||||||
Number::New(env->isolate(), 8 * sizeof(intptr_t)));
|
Number::New(isolate, 8 * sizeof(intptr_t)));
|
||||||
|
|
||||||
#if defined HAVE_DTRACE || defined HAVE_ETW
|
#if defined HAVE_DTRACE || defined HAVE_ETW
|
||||||
READONLY_TRUE_PROPERTY(target, "hasDtrace");
|
READONLY_TRUE_PROPERTY(target, "hasDtrace");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
READONLY_PROPERTY(target, "hasCachedBuiltins",
|
||||||
|
v8::Boolean::New(isolate, native_module::has_code_cache));
|
||||||
} // InitConfig
|
} // InitConfig
|
||||||
|
|
||||||
} // namespace node
|
} // namespace node
|
||||||
|
@ -10,6 +10,8 @@ class Environment;
|
|||||||
|
|
||||||
namespace native_module {
|
namespace native_module {
|
||||||
|
|
||||||
|
extern const bool has_code_cache;
|
||||||
|
|
||||||
class NativeModuleEnv {
|
class NativeModuleEnv {
|
||||||
public:
|
public:
|
||||||
static void Initialize(v8::Local<v8::Object> target,
|
static void Initialize(v8::Local<v8::Object> target,
|
||||||
|
@ -31,7 +31,7 @@ const loadedModules = process.moduleLoadList
|
|||||||
|
|
||||||
// Cross-compiled binaries do not have code cache, verifies that the builtins
|
// Cross-compiled binaries do not have code cache, verifies that the builtins
|
||||||
// are all compiled without cache and we are doing the bookkeeping right.
|
// are all compiled without cache and we are doing the bookkeeping right.
|
||||||
if (process.config.variables.want_separate_host_toolset === 1) {
|
if (!process.features.cached_builtins) {
|
||||||
console.log('The binary is not configured with code cache');
|
console.log('The binary is not configured with code cache');
|
||||||
if (isMainThread) {
|
if (isMainThread) {
|
||||||
assert.deepStrictEqual(compiledWithCache, new Set());
|
assert.deepStrictEqual(compiledWithCache, new Set());
|
||||||
|
@ -13,7 +13,8 @@ assert.deepStrictEqual(keys, new Set([
|
|||||||
'tls_alpn',
|
'tls_alpn',
|
||||||
'tls_sni',
|
'tls_sni',
|
||||||
'tls_ocsp',
|
'tls_ocsp',
|
||||||
'tls'
|
'tls',
|
||||||
|
'cached_builtins',
|
||||||
]));
|
]));
|
||||||
|
|
||||||
for (const key of keys) {
|
for (const key of keys) {
|
||||||
|
@ -3,8 +3,7 @@
|
|||||||
// This tests that --cpu-prof, --cpu-prof-dir and --cpu-prof-name works.
|
// This tests that --cpu-prof, --cpu-prof-dir and --cpu-prof-name works.
|
||||||
|
|
||||||
const common = require('../common');
|
const common = require('../common');
|
||||||
if (process.features.debug &&
|
if (process.features.debug && process.features.cached_builtins) {
|
||||||
process.config.variables.node_code_cache_path === 'yes') {
|
|
||||||
// FIXME(joyeecheung): the profiler crashes when code cache
|
// FIXME(joyeecheung): the profiler crashes when code cache
|
||||||
// is enabled in debug builds.
|
// is enabled in debug builds.
|
||||||
common.skip('--cpu-prof does not work in debug builds with code cache');
|
common.skip('--cpu-prof does not work in debug builds with code cache');
|
||||||
|
@ -78,6 +78,9 @@ static std::string GenerateCodeCache(
|
|||||||
|
|
||||||
namespace node {
|
namespace node {
|
||||||
namespace native_module {
|
namespace native_module {
|
||||||
|
|
||||||
|
const bool has_code_cache = true;
|
||||||
|
|
||||||
)";
|
)";
|
||||||
|
|
||||||
size_t total = 0;
|
size_t total = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user