@@ -25,6 +25,8 @@ using errors::TryCatchScope;
2525using  v8::Array;
2626using  v8::Boolean;
2727using  v8::Context;
28+ using  v8::CppHeap;
29+ using  v8::CppHeapCreateParams;
2830using  v8::EscapableHandleScope;
2931using  v8::Function;
3032using  v8::FunctionCallbackInfo;
@@ -304,6 +306,10 @@ Isolate* NewIsolate(Isolate::CreateParams* params,
304306                    MultiIsolatePlatform* platform,
305307                    const  SnapshotData* snapshot_data,
306308                    const  IsolateSettings& settings) {
309+   if  (params->cpp_heap  == nullptr ) {
310+     params->cpp_heap  =
311+         CppHeap::Create (platform, CppHeapCreateParams{{}}).release ();
312+   }
307313  Isolate* isolate = Isolate::Allocate ();
308314  if  (isolate == nullptr ) return  nullptr ;
309315
@@ -345,9 +351,13 @@ Isolate* NewIsolate(ArrayBufferAllocator* allocator,
345351                    uv_loop_t * event_loop,
346352                    MultiIsolatePlatform* platform,
347353                    const  EmbedderSnapshotData* snapshot_data,
348-                     const  IsolateSettings& settings) {
354+                     const  IsolateSettings& settings,
355+                     std::unique_ptr<CppHeap> cpp_heap) {
349356  Isolate::CreateParams params;
350357  if  (allocator != nullptr ) params.array_buffer_allocator  = allocator;
358+   if  (cpp_heap) {
359+     params.cpp_heap  = cpp_heap.release ();
360+   }
351361  return  NewIsolate (¶ms,
352362                    event_loop,
353363                    platform,
@@ -359,9 +369,13 @@ Isolate* NewIsolate(std::shared_ptr<ArrayBufferAllocator> allocator,
359369                    uv_loop_t * event_loop,
360370                    MultiIsolatePlatform* platform,
361371                    const  EmbedderSnapshotData* snapshot_data,
362-                     const  IsolateSettings& settings) {
372+                     const  IsolateSettings& settings,
373+                     std::unique_ptr<CppHeap> cpp_heap) {
363374  Isolate::CreateParams params;
364375  if  (allocator) params.array_buffer_allocator_shared  = allocator;
376+   if  (cpp_heap) {
377+     params.cpp_heap  = cpp_heap.release ();
378+   }
365379  return  NewIsolate (¶ms,
366380                    event_loop,
367381                    platform,
0 commit comments