@@ -25,6 +25,8 @@ using errors::TryCatchScope;
25
25
using v8::Array;
26
26
using v8::Boolean ;
27
27
using v8::Context;
28
+ using v8::CppHeap;
29
+ using v8::CppHeapCreateParams;
28
30
using v8::EscapableHandleScope;
29
31
using v8::Function;
30
32
using v8::FunctionCallbackInfo;
@@ -304,6 +306,10 @@ Isolate* NewIsolate(Isolate::CreateParams* params,
304
306
MultiIsolatePlatform* platform,
305
307
const SnapshotData* snapshot_data,
306
308
const IsolateSettings& settings) {
309
+ if (params->cpp_heap == nullptr ) {
310
+ params->cpp_heap =
311
+ CppHeap::Create (platform, CppHeapCreateParams{{}}).release ();
312
+ }
307
313
Isolate* isolate = Isolate::Allocate ();
308
314
if (isolate == nullptr ) return nullptr ;
309
315
@@ -345,9 +351,13 @@ Isolate* NewIsolate(ArrayBufferAllocator* allocator,
345
351
uv_loop_t * event_loop,
346
352
MultiIsolatePlatform* platform,
347
353
const EmbedderSnapshotData* snapshot_data,
348
- const IsolateSettings& settings) {
354
+ const IsolateSettings& settings,
355
+ std::unique_ptr<CppHeap> cpp_heap) {
349
356
Isolate::CreateParams params;
350
357
if (allocator != nullptr ) params.array_buffer_allocator = allocator;
358
+ if (cpp_heap) {
359
+ params.cpp_heap = cpp_heap.release ();
360
+ }
351
361
return NewIsolate (¶ms,
352
362
event_loop,
353
363
platform,
@@ -359,9 +369,13 @@ Isolate* NewIsolate(std::shared_ptr<ArrayBufferAllocator> allocator,
359
369
uv_loop_t * event_loop,
360
370
MultiIsolatePlatform* platform,
361
371
const EmbedderSnapshotData* snapshot_data,
362
- const IsolateSettings& settings) {
372
+ const IsolateSettings& settings,
373
+ std::unique_ptr<CppHeap> cpp_heap) {
363
374
Isolate::CreateParams params;
364
375
if (allocator) params.array_buffer_allocator_shared = allocator;
376
+ if (cpp_heap) {
377
+ params.cpp_heap = cpp_heap.release ();
378
+ }
365
379
return NewIsolate (¶ms,
366
380
event_loop,
367
381
platform,
0 commit comments