diff options
author | Myk Melez <myk@mykzilla.org> | 2017-01-31 09:56:09 -0800 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2017-02-03 14:49:23 -0800 |
commit | 046f66a55451fba336aba8aa9bf881ffb5e74c30 (patch) | |
tree | a719cb248150a19ec79e832ead1b9dc75263ca8f /src | |
parent | 7d2dc90aeb7a7e05588b1623dd03be72970fa222 (diff) | |
download | android-node-v8-046f66a55451fba336aba8aa9bf881ffb5e74c30.tar.gz android-node-v8-046f66a55451fba336aba8aa9bf881ffb5e74c30.tar.bz2 android-node-v8-046f66a55451fba336aba8aa9bf881ffb5e74c30.zip |
src: fix building --without-v8-plartform
* declare v8_platform.platform_ unconditionally
v8_platform.platform_ is referenced by node::Start
without regard to the value of NODE_USE_V8_PLATFORM,
so it should be declared unconditionally, otherwise
Node fails to compile when !NODE_USE_V8_PLATFORM.
* update v8_platform.StartInspector signature
The call signature of v8_platform.StartInspector needs
to be the same whether or not NODE_USE_V8_PLATFORM,
otherwise Node will fail to compile if HAVE_INSPECTOR
and !NODE_USE_V8_PLATFORM.
* don't call tracing_agent->Start w/nullptr
node::tracing::Agent::Start can't accept a nullptr
argument to its platform parameter, so don't call it
when Node is compiled with NODE_USE_V8_PLATFORM=0.
* refactor tracing_agent into v8_platform
Move tracing_agent global into the v8_platform struct,
renaming it to tracing_agent_; CHECK(tracing_agent_ ==
nullptr) in StartTracingAgent() to detect double calls;
and relace another tracing_agent->Stop() call with a call
to StopTracingAgent().
PR-URL: https://github.com/nodejs/node/pull/11088
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/node.cc | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/node.cc b/src/node.cc index 90eee0fb9f..a678c177f3 100644 --- a/src/node.cc +++ b/src/node.cc @@ -200,7 +200,6 @@ static uv_async_t dispatch_debug_messages_async; static Mutex node_isolate_mutex; static v8::Isolate* node_isolate; -static tracing::Agent* tracing_agent; static node::DebugOptions debug_options; @@ -228,16 +227,33 @@ static struct { } #endif // HAVE_INSPECTOR + void StartTracingAgent() { + CHECK(tracing_agent_ == nullptr); + tracing_agent_ = new tracing::Agent(); + tracing_agent_->Start(platform_, trace_enabled_categories); + } + + void StopTracingAgent() { + tracing_agent_->Stop(); + } + v8::Platform* platform_; + tracing::Agent* tracing_agent_; #else // !NODE_USE_V8_PLATFORM void Initialize(int thread_pool_size) {} void PumpMessageLoop(Isolate* isolate) {} void Dispose() {} bool StartInspector(Environment *env, const char* script_path, - int port, bool wait) { + const node::DebugOptions& options) { env->ThrowError("Node compiled with NODE_USE_V8_PLATFORM=0"); return false; // make compiler happy } + + void StartTracingAgent() { + fprintf(stderr, "Node compiled with NODE_USE_V8_PLATFORM=0, " + "so event tracing is not available.\n"); + } + void StopTracingAgent() {} #endif // !NODE_USE_V8_PLATFORM } v8_platform; @@ -3386,7 +3402,7 @@ void SetupProcessObject(Environment* env, void SignalExit(int signo) { uv_tty_reset_mode(); if (trace_enabled) { - tracing_agent->Stop(); + v8_platform.StopTracingAgent(); } #ifdef __FreeBSD__ // FreeBSD has a nasty bug, see RegisterSignalHandler for details @@ -4533,15 +4549,14 @@ int Start(int argc, char** argv) { if (trace_enabled) { fprintf(stderr, "Warning: Trace event is an experimental feature " "and could change at any time.\n"); - tracing_agent = new tracing::Agent(); - tracing_agent->Start(v8_platform.platform_, trace_enabled_categories); + v8_platform.StartTracingAgent(); } V8::Initialize(); v8_initialized = true; const int exit_code = Start(uv_default_loop(), argc, argv, exec_argc, exec_argv); if (trace_enabled) { - tracing_agent->Stop(); + v8_platform.StopTracingAgent(); } v8_initialized = false; V8::Dispose(); |