Skip to content
Permalink
Browse files

build: improve embedded code-cache detection

PR-URL: #27311
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
  • Loading branch information...
refack committed Apr 19, 2019
1 parent 49d3d11 commit 5aaf666b3b82a66485bea6a6b59fbfc838192e2f
@@ -1051,7 +1051,9 @@ def configure_node(o):
o['variables']['debug_nghttp2'] = 'false'

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)
node_module_version = getmoduleversion.get_version()

@@ -244,7 +244,8 @@ Object.defineProperty(process, 'features', {
tls_alpn: hasOpenSSL,
tls_sni: hasOpenSSL,
tls_ocsp: hasOpenSSL,
tls: hasOpenSSL
tls: hasOpenSSL,
cached_builtins: config.hasCachedBuiltins,
}
});

@@ -1,4 +1,3 @@

#include "node_native_module_env.h"

// This is supposed to be generated by tools/generate_code_cache.js
@@ -7,6 +6,8 @@
namespace node {
namespace native_module {

const bool has_code_cache = false;

// The generated source code would insert <std::string, UnionString> pairs
// into NativeModuleLoader::instance.code_cache_.
void NativeModuleEnv::InitializeCodeCache() {}
@@ -1,6 +1,7 @@
#include "env-inl.h"
#include "node.h"
#include "node_i18n.h"
#include "node_native_module_env.h"
#include "node_options.h"
#include "util-inl.h"

@@ -73,11 +74,14 @@ static void Initialize(Local<Object> target,

READONLY_PROPERTY(target,
"bits",
Number::New(env->isolate(), 8 * sizeof(intptr_t)));
Number::New(isolate, 8 * sizeof(intptr_t)));

#if defined HAVE_DTRACE || defined HAVE_ETW
READONLY_TRUE_PROPERTY(target, "hasDtrace");
#endif

READONLY_PROPERTY(target, "hasCachedBuiltins",
v8::Boolean::New(isolate, native_module::has_code_cache));
} // InitConfig

} // namespace node
@@ -10,6 +10,8 @@ class Environment;

namespace native_module {

extern const bool has_code_cache;

class NativeModuleEnv {
public:
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
// 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');
if (isMainThread) {
assert.deepStrictEqual(compiledWithCache, new Set());
@@ -13,7 +13,8 @@ assert.deepStrictEqual(keys, new Set([
'tls_alpn',
'tls_sni',
'tls_ocsp',
'tls'
'tls',
'cached_builtins',
]));

for (const key of keys) {
@@ -3,8 +3,7 @@
// This tests that --cpu-prof, --cpu-prof-dir and --cpu-prof-name works.

const common = require('../common');
if (process.features.debug &&
process.config.variables.node_code_cache_path === 'yes') {
if (process.features.debug && process.features.cached_builtins) {
// FIXME(joyeecheung): the profiler crashes when code cache
// is enabled in debug builds.
common.skip('--cpu-prof does not work in debug builds with code cache');
@@ -78,6 +78,9 @@ static std::string GenerateCodeCache(
namespace node {
namespace native_module {
const bool has_code_cache = true;
)";

size_t total = 0;

0 comments on commit 5aaf666

Please sign in to comment.
You can’t perform that action at this time.