From c0c2461245f53baa6efc05b01c2274a6b2446803 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Fri, 8 Dec 2017 09:31:35 +0900 Subject: [PATCH] Do not create duplicate V8Platform in NodeDebugger --- atom/app/node_main.cc | 2 +- atom/browser/atom_browser_main_parts.cc | 2 +- atom/browser/javascript_environment.h | 1 + atom/browser/node_debugger.cc | 15 +++------------ atom/browser/node_debugger.h | 3 +-- 5 files changed, 7 insertions(+), 16 deletions(-) diff --git a/atom/app/node_main.cc b/atom/app/node_main.cc index cc8df0e0c8f..94a727f5aa9 100644 --- a/atom/app/node_main.cc +++ b/atom/app/node_main.cc @@ -58,7 +58,7 @@ int NodeMain(int argc, char *argv[]) { // Enable support for v8 inspector. NodeDebugger node_debugger(env); - node_debugger.Start(); + node_debugger.Start(gin_env.platform()); mate::Dictionary process(gin_env.isolate(), env->process_object()); #if defined(OS_WIN) diff --git a/atom/browser/atom_browser_main_parts.cc b/atom/browser/atom_browser_main_parts.cc index 89ab75c33cb..8d6bd013fa3 100644 --- a/atom/browser/atom_browser_main_parts.cc +++ b/atom/browser/atom_browser_main_parts.cc @@ -137,7 +137,7 @@ void AtomBrowserMainParts::PostEarlyInitialization() { // Enable support for v8 inspector node_debugger_.reset(new NodeDebugger(env)); - node_debugger_->Start(); + node_debugger_->Start(js_env_->platform()); // Add Electron extended APIs. atom_bindings_->BindTo(js_env_->isolate(), env->process_object()); diff --git a/atom/browser/javascript_environment.h b/atom/browser/javascript_environment.h index e757d9ec4ae..0754df212c8 100644 --- a/atom/browser/javascript_environment.h +++ b/atom/browser/javascript_environment.h @@ -23,6 +23,7 @@ class JavascriptEnvironment { void OnMessageLoopCreated(); void OnMessageLoopDestroying(); + node::NodePlatform* platform() const { return platform_; } v8::Isolate* isolate() const { return isolate_; } v8::Local context() const { return v8::Local::New(isolate_, context_); diff --git a/atom/browser/node_debugger.cc b/atom/browser/node_debugger.cc index 1f43f47fb1c..27d2ce79991 100644 --- a/atom/browser/node_debugger.cc +++ b/atom/browser/node_debugger.cc @@ -14,15 +14,13 @@ namespace atom { NodeDebugger::NodeDebugger(node::Environment* env) - : env_(env), platform_(nullptr) { + : env_(env) { } NodeDebugger::~NodeDebugger() { - if (platform_) - FreePlatform(platform_); } -void NodeDebugger::Start() { +void NodeDebugger::Start(node::NodePlatform* platform) { auto inspector = env_->inspector_agent(); if (inspector == nullptr) return; @@ -37,13 +35,6 @@ void NodeDebugger::Start() { } if (options.inspector_enabled()) { - // Use custom platform since the gin platform does not work correctly - // with node's inspector agent. We use the default thread pool size - // specified by node.cc - platform_ = node::CreatePlatform( - /* thread_pool_size */ 4, env_->event_loop(), - /* tracing_controller */ nullptr); - // Set process._debugWaitConnect if --inspect-brk was specified to stop // the debugger on the first line if (options.wait_for_connect()) { @@ -51,7 +42,7 @@ void NodeDebugger::Start() { process.Set("_breakFirstLine", true); } - inspector->Start(platform_, nullptr, options); + inspector->Start(platform, nullptr, options); } } diff --git a/atom/browser/node_debugger.h b/atom/browser/node_debugger.h index 609a4dda3c5..cb176c77764 100644 --- a/atom/browser/node_debugger.h +++ b/atom/browser/node_debugger.h @@ -20,11 +20,10 @@ class NodeDebugger { explicit NodeDebugger(node::Environment* env); ~NodeDebugger(); - void Start(); + void Start(node::NodePlatform* platform); private: node::Environment* env_; - node::NodePlatform* platform_; DISALLOW_COPY_AND_ASSIGN(NodeDebugger); };