@@ -47,7 +47,6 @@ using v8::Isolate;
4747using v8::Local;
4848using v8::LocalVector;
4949using v8::MaybeLocal;
50- using v8::Name;
5150using v8::Object;
5251using v8::ScriptCompiler;
5352using v8::String;
@@ -338,16 +337,18 @@ static MaybeLocal<Object> ConvertHeapStatsToJSObject(
338337 auto space_stats_tmpl = env->space_stats_template ();
339338 auto heap_stats_tmpl = env->v8_heap_statistics_template ();
340339 if (object_stats_template.IsEmpty ()) {
341- std::string_view object_stats_names[] = {" allocated_bytes" , " object_count" };
340+ static constexpr std::string_view object_stats_names[] = {" allocated_bytes" ,
341+ " object_count" };
342342 object_stats_template =
343343 DictionaryTemplate::New (isolate, object_stats_names);
344344 env->set_object_stats_template (object_stats_template);
345345 }
346346 if (page_stats_tmpl.IsEmpty ()) {
347- std::string_view page_stats_names[] = {" committed_size_bytes" ,
348- " resident_size_bytes" ,
349- " used_size_bytes" ,
350- " object_statistics" };
347+ static constexpr std::string_view page_stats_names[] = {
348+ " committed_size_bytes" ,
349+ " resident_size_bytes" ,
350+ " used_size_bytes" ,
351+ " object_statistics" };
351352 page_stats_tmpl = DictionaryTemplate::New (isolate, page_stats_names);
352353 env->set_page_stats_template (page_stats_tmpl);
353354 }
@@ -359,21 +360,23 @@ static MaybeLocal<Object> ConvertHeapStatsToJSObject(
359360 env->set_free_list_statistics_template (free_list_statistics_template);
360361 }
361362 if (space_stats_tmpl.IsEmpty ()) {
362- std::string_view space_stats_names[] = {" name" ,
363- " committed_size_bytes" ,
364- " resident_size_bytes" ,
365- " used_size_bytes" ,
366- " page_stats" ,
367- " free_list_stats" };
363+ static constexpr std::string_view space_stats_names[] = {
364+ " name" ,
365+ " committed_size_bytes" ,
366+ " resident_size_bytes" ,
367+ " used_size_bytes" ,
368+ " page_stats" ,
369+ " free_list_stats" };
368370 space_stats_tmpl = DictionaryTemplate::New (isolate, space_stats_names);
369371 env->set_space_stats_template (space_stats_tmpl);
370372 }
371373 if (heap_stats_tmpl.IsEmpty ()) {
372- std::string_view heap_statistics_names[] = {" committed_size_bytes" ,
373- " resident_size_bytes" ,
374- " used_size_bytes" ,
375- " space_statistics" ,
376- " type_names" };
374+ static constexpr std::string_view heap_statistics_names[] = {
375+ " committed_size_bytes" ,
376+ " resident_size_bytes" ,
377+ " used_size_bytes" ,
378+ " space_statistics" ,
379+ " type_names" };
377380 heap_stats_tmpl = DictionaryTemplate::New (isolate, heap_statistics_names);
378381 env->set_v8_heap_statistics_template (heap_stats_tmpl);
379382 }
@@ -398,8 +401,12 @@ static MaybeLocal<Object> ConvertHeapStatsToJSObject(
398401 isolate, static_cast <uint32_t >(object_stats.allocated_bytes )),
399402 Uint32::NewFromUnsigned (
400403 isolate, static_cast <uint32_t >(object_stats.object_count ))};
401- Local<Object> object_stats_object =
402- object_stats_template->NewInstance (context, object_stats_values);
404+ Local<Object> object_stats_object;
405+ if (!NewDictionaryInstance (
406+ context, object_stats_template, object_stats_values)
407+ .ToLocal (&object_stats_object)) {
408+ return MaybeLocal<Object>();
409+ }
403410 object_statistics_array.emplace_back (object_stats_object);
404411 }
405412
@@ -414,8 +421,12 @@ static MaybeLocal<Object> ConvertHeapStatsToJSObject(
414421 Array::New (isolate,
415422 object_statistics_array.data (),
416423 object_statistics_array.size ())};
417- page_statistics_array.emplace_back (
418- page_stats_tmpl->NewInstance (context, page_stats_values));
424+ Local<Object> page_stats_object;
425+ if (!NewDictionaryInstance (context, page_stats_tmpl, page_stats_values)
426+ .ToLocal (&page_stats_object)) {
427+ return MaybeLocal<Object>();
428+ }
429+ page_statistics_array.emplace_back (page_stats_object);
419430 }
420431
421432 // Free List Statistics
@@ -427,9 +438,13 @@ static MaybeLocal<Object> ConvertHeapStatsToJSObject(
427438 ToV8ValuePrimitiveArray (
428439 context, space_stats.free_list_stats .free_size , isolate)};
429440
430- Local<Object> free_list_statistics_obj =
431- free_list_statistics_template->NewInstance (context,
432- free_list_statistics_values);
441+ Local<Object> free_list_statistics_obj;
442+ if (!NewDictionaryInstance (context,
443+ free_list_statistics_template,
444+ free_list_statistics_values)
445+ .ToLocal (&free_list_statistics_obj)) {
446+ return MaybeLocal<Object>();
447+ }
433448
434449 // Set Space Statistics
435450 Local<Value> name_value;
@@ -453,8 +468,12 @@ static MaybeLocal<Object> ConvertHeapStatsToJSObject(
453468 page_statistics_array.size ()),
454469 free_list_statistics_obj,
455470 };
456- space_statistics_array.emplace_back (
457- space_stats_tmpl->NewInstance (context, space_stats_values));
471+ Local<Object> space_stats_object;
472+ if (!NewDictionaryInstance (context, space_stats_tmpl, space_stats_values)
473+ .ToLocal (&space_stats_object)) {
474+ return MaybeLocal<Object>();
475+ }
476+ space_statistics_array.emplace_back (space_stats_object);
458477 }
459478
460479 Local<Value> type_names_value;
@@ -474,7 +493,8 @@ static MaybeLocal<Object> ConvertHeapStatsToJSObject(
474493 space_statistics_array.size ()),
475494 type_names_value};
476495
477- return heap_stats_tmpl->NewInstance (context, heap_statistics_values);
496+ return NewDictionaryInstance (
497+ context, heap_stats_tmpl, heap_statistics_values);
478498}
479499
480500static void GetCppHeapStatistics (const FunctionCallbackInfo<Value>& args) {
0 commit comments