diff --git a/runtime/mem/mem_manager-inl.h b/runtime/mem/mem_manager-inl.h index d7d83423e2c10bda02da02e3b2af5cec75a30c6d..d425372f1f39de588d40ff06a72378220e2e190d 100644 --- a/runtime/mem/mem_manager-inl.h +++ b/runtime/mem/mem_manager-inl.h @@ -30,9 +30,10 @@ TaggedObject *MemManager::AllocateYoungGenerationOrHugeObject(JSHClass *hclass) return AllocateYoungGenerationOrHugeObject(hclass, size); } -TaggedObject *MemManager::AllocateYoungGenerationOrHugeObject(JSHClass *hclass, size_t size) +TaggedObject *MemManager::AllocateYoungGenerationOrHugeObject(JSHClass *hclass, size_t size, + mem::ObjectAllocatorBase::ObjMemInitPolicy obj_init) { - auto object = heap_manager_->AllocateObject(hclass->GetHClass(), size, TAGGED_OBJECT_ALIGNMENT, thread_); + auto object = heap_manager_->AllocateObject(hclass->GetHClass(), size, TAGGED_OBJECT_ALIGNMENT, thread_, obj_init); // SUPPRESS_CSA_NEXTLINE(alpha.core.WasteObjHeader) return TaggedObject::Cast(object); } diff --git a/runtime/mem/mem_manager.h b/runtime/mem/mem_manager.h index e4264763f570cc541eb19e3b07340dcd595603b7..878e7b466ed292f724ba7fcde1bddf68e99914c5 100644 --- a/runtime/mem/mem_manager.h +++ b/runtime/mem/mem_manager.h @@ -16,6 +16,7 @@ #ifndef ECMASCRIPT_MEM_JS_MEM_MANAGER_H #define ECMASCRIPT_MEM_JS_MEM_MANAGER_H +#include "mem/heap_manager.h" #include "plugins/ecmascript/runtime/js_hclass.h" namespace panda::ecmascript { @@ -28,7 +29,9 @@ public: NO_MOVE_SEMANTIC(MemManager); inline TaggedObject *AllocateYoungGenerationOrHugeObject(JSHClass *hclass); - inline TaggedObject *AllocateYoungGenerationOrHugeObject(JSHClass *hclass, size_t size); + inline TaggedObject *AllocateYoungGenerationOrHugeObject( + JSHClass *hclass, size_t size, + mem::ObjectAllocatorBase::ObjMemInitPolicy obj_init = mem::ObjectAllocatorBase::ObjMemInitPolicy::REQUIRE_INIT); inline TaggedObject *AllocateNonMovableOrHugeObject(JSHClass *hclass, size_t size); inline TaggedObject *AllocateDynClassClass(JSHClass *hclass, size_t size); inline TaggedObject *AllocateNonMovableOrHugeObject(JSHClass *hclass); diff --git a/runtime/object_factory-inl.h b/runtime/object_factory-inl.h index 33f74fe357b0360505a1f79cc78bfea9a38792c2..cba1d631770c63ee93c2aceb149a745a895ed797 100644 --- a/runtime/object_factory-inl.h +++ b/runtime/object_factory-inl.h @@ -31,7 +31,8 @@ EcmaString *ObjectFactory::AllocNonMovableStringObject(size_t size) EcmaString *ObjectFactory::AllocStringObject(size_t size) { NewObjectHook(); - return reinterpret_cast(heap_helper_.AllocateYoungGenerationOrHugeObject(string_class_, size)); + return reinterpret_cast(heap_helper_.AllocateYoungGenerationOrHugeObject( + string_class_, size, mem::ObjectAllocatorBase::ObjMemInitPolicy::NO_INIT)); } JSHandle ObjectFactory::NewJSNativePointer(void *external_pointer, const DeleteEntryPoint &call_back,