From 6050236c3dfa22fd152bfa62e008e8db0d558e1f Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Tue, 7 Jan 2020 14:18:56 +0100 Subject: [PATCH] src: remove uses of node::InitializeV8Platform() This requires minor changes to src/env.cc to deal with `node::tracing::AgentWriterHandle::GetTracingController()` now possibly returning a nullptr, because the cctest doesn't set one. It seems plausible to me that embedders won't set one either so that seems like an okay change to make. It avoids embedders having to track down nullptr segfaults. PR-URL: https://github.com/nodejs/node/pull/31245 Refs: https://github.com/nodejs/node/pull/31217 Reviewed-By: David Carlier Reviewed-By: Rich Trott Reviewed-By: Anna Henningsen --- src/env.cc | 8 ++++---- src/node.cc | 3 ++- test/cctest/node_test_fixture.h | 10 +++++++--- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/env.cc b/src/env.cc index ff44b0d8af3e23..8ed6150c720dbe 100644 --- a/src/env.cc +++ b/src/env.cc @@ -332,8 +332,8 @@ Environment::Environment(IsolateData* isolate_data, if (tracing::AgentWriterHandle* writer = GetTracingAgentWriter()) { trace_state_observer_ = std::make_unique(this); - TracingController* tracing_controller = writer->GetTracingController(); - tracing_controller->AddTraceStateObserver(trace_state_observer_.get()); + if (TracingController* tracing_controller = writer->GetTracingController()) + tracing_controller->AddTraceStateObserver(trace_state_observer_.get()); } destroy_async_id_list_.reserve(512); @@ -409,8 +409,8 @@ Environment::~Environment() { if (trace_state_observer_) { tracing::AgentWriterHandle* writer = GetTracingAgentWriter(); CHECK_NOT_NULL(writer); - TracingController* tracing_controller = writer->GetTracingController(); - tracing_controller->RemoveTraceStateObserver(trace_state_observer_.get()); + if (TracingController* tracing_controller = writer->GetTracingController()) + tracing_controller->RemoveTraceStateObserver(trace_state_observer_.get()); } delete[] heap_statistics_buffer_; diff --git a/src/node.cc b/src/node.cc index e48827d0cb236a..461bdc7f6661ae 100644 --- a/src/node.cc +++ b/src/node.cc @@ -1077,7 +1077,8 @@ InitializationResult InitializeOncePerProcess(int argc, char** argv) { V8::SetEntropySource(crypto::EntropySource); #endif // HAVE_OPENSSL - InitializeV8Platform(per_process::cli_options->v8_thread_pool_size); + per_process::v8_platform.Initialize( + per_process::cli_options->v8_thread_pool_size); V8::Initialize(); performance::performance_v8_start = PERFORMANCE_NOW(); per_process::v8_initialized = true; diff --git a/test/cctest/node_test_fixture.h b/test/cctest/node_test_fixture.h index 07ec7474549f18..709d68d8f4c2de 100644 --- a/test/cctest/node_test_fixture.h +++ b/test/cctest/node_test_fixture.h @@ -81,9 +81,13 @@ class NodeTestFixture : public ::testing::Test { tracing_agent = std::make_unique(); node::tracing::TraceEventHelper::SetAgent(tracing_agent.get()); + node::tracing::TracingController* tracing_controller = + tracing_agent->GetTracingController(); CHECK_EQ(0, uv_loop_init(¤t_loop)); - platform.reset(static_cast( - node::InitializeV8Platform(4))); + static constexpr int kV8ThreadPoolSize = 4; + platform.reset( + new node::NodePlatform(kV8ThreadPoolSize, tracing_controller)); + v8::V8::InitializePlatform(platform.get()); v8::V8::Initialize(); } @@ -99,7 +103,7 @@ class NodeTestFixture : public ::testing::Test { void SetUp() override { allocator = ArrayBufferUniquePtr(node::CreateArrayBufferAllocator(), &node::FreeArrayBufferAllocator); - isolate_ = NewIsolate(allocator.get(), ¤t_loop); + isolate_ = NewIsolate(allocator.get(), ¤t_loop, platform.get()); CHECK_NE(isolate_, nullptr); isolate_->Enter(); }