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