diff --git a/src/api/environment.cc b/src/api/environment.cc index 766b603a313a3c..d00e719c725a45 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -351,9 +351,13 @@ Isolate* NewIsolate(ArrayBufferAllocator* allocator, uv_loop_t* event_loop, MultiIsolatePlatform* platform, const EmbedderSnapshotData* snapshot_data, - const IsolateSettings& settings) { + const IsolateSettings& settings, + std::unique_ptr cpp_heap) { Isolate::CreateParams params; if (allocator != nullptr) params.array_buffer_allocator = allocator; + if (cpp_heap) { + params.cpp_heap = cpp_heap.release(); + } return NewIsolate(¶ms, event_loop, platform, diff --git a/src/node.h b/src/node.h index 06304fbdda9c32..eac0582d60620e 100644 --- a/src/node.h +++ b/src/node.h @@ -578,7 +578,8 @@ NODE_EXTERN v8::Isolate* NewIsolate( struct uv_loop_s* event_loop, MultiIsolatePlatform* platform, const EmbedderSnapshotData* snapshot_data = nullptr, - const IsolateSettings& settings = {}); + const IsolateSettings& settings = {}, + std::unique_ptr cpp_heap = {}); NODE_EXTERN v8::Isolate* NewIsolate( std::shared_ptr allocator, struct uv_loop_s* event_loop, diff --git a/test/cctest/test_cppgc.cc b/test/cctest/test_cppgc.cc index 350b7945c9e302..93673f77f3d6dc 100644 --- a/test/cctest/test_cppgc.cc +++ b/test/cctest/test_cppgc.cc @@ -46,18 +46,14 @@ int CppGCed::kDestructCount = 0; int CppGCed::kTraceCount = 0; TEST_F(NodeZeroIsolateTestFixture, ExistingCppHeapTest) { - v8::Isolate* isolate = - node::NewIsolate(allocator.get(), ¤t_loop, platform.get()); - // Create and attach the CppHeap before we set up the IsolateData so that // it recognizes the existing heap. std::unique_ptr cpp_heap = v8::CppHeap::Create(platform.get(), v8::CppHeapCreateParams{{}}); - // TODO(joyeecheung): pass it into v8::Isolate::CreateParams and let V8 - // own it when we can keep the isolate registered/task runner discoverable - // during isolate disposal. - isolate->AttachCppHeap(cpp_heap.get()); + v8::Isolate* isolate = + node::NewIsolate(allocator.get(), ¤t_loop, platform.get(), + nullptr, {}, std::move(cpp_heap)); // Try creating Context + IsolateData + Environment. { @@ -102,8 +98,6 @@ TEST_F(NodeZeroIsolateTestFixture, ExistingCppHeapTest) { platform->DrainTasks(isolate); // Cleanup. - isolate->DetachCppHeap(); - cpp_heap->Terminate(); platform->DrainTasks(isolate); }