@@ -26,6 +26,8 @@ using errors::TryCatchScope;
2626using v8::Array;
2727using v8::Boolean;
2828using v8::Context;
29+ using v8::CppHeap;
30+ using v8::CppHeapCreateParams;
2931using v8::EscapableHandleScope;
3032using v8::Function;
3133using v8::FunctionCallbackInfo;
@@ -305,6 +307,10 @@ Isolate* NewIsolate(Isolate::CreateParams* params,
305307 MultiIsolatePlatform* platform,
306308 const SnapshotData* snapshot_data,
307309 const IsolateSettings& settings) {
310+ if (params->cpp_heap == nullptr ) {
311+ params->cpp_heap =
312+ CppHeap::Create (platform, CppHeapCreateParams{{}}).release ();
313+ }
308314 Isolate* isolate = Isolate::Allocate ();
309315 if (isolate == nullptr ) return nullptr ;
310316
@@ -346,9 +352,13 @@ Isolate* NewIsolate(ArrayBufferAllocator* allocator,
346352 uv_loop_t * event_loop,
347353 MultiIsolatePlatform* platform,
348354 const EmbedderSnapshotData* snapshot_data,
349- const IsolateSettings& settings) {
355+ const IsolateSettings& settings,
356+ std::unique_ptr<CppHeap> cpp_heap) {
350357 Isolate::CreateParams params;
351358 if (allocator != nullptr ) params.array_buffer_allocator = allocator;
359+ if (cpp_heap) {
360+ params.cpp_heap = cpp_heap.release ();
361+ }
352362 return NewIsolate (¶ms,
353363 event_loop,
354364 platform,
@@ -360,9 +370,13 @@ Isolate* NewIsolate(std::shared_ptr<ArrayBufferAllocator> allocator,
360370 uv_loop_t * event_loop,
361371 MultiIsolatePlatform* platform,
362372 const EmbedderSnapshotData* snapshot_data,
363- const IsolateSettings& settings) {
373+ const IsolateSettings& settings,
374+ std::unique_ptr<CppHeap> cpp_heap) {
364375 Isolate::CreateParams params;
365376 if (allocator) params.array_buffer_allocator_shared = allocator;
377+ if (cpp_heap) {
378+ params.cpp_heap = cpp_heap.release ();
379+ }
366380 return NewIsolate (¶ms,
367381 event_loop,
368382 platform,
0 commit comments