@@ -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