From 046f66a55451fba336aba8aa9bf881ffb5e74c30 Mon Sep 17 00:00:00 2001 From: Myk Melez Date: Tue, 31 Jan 2017 09:56:09 -0800 Subject: [PATCH] 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 Reviewed-By: Michael Dawson --- src/node.cc | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/node.cc b/src/node.cc index 90eee0fb9fe..a678c177f3d 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();