From b43796dd58b769e7d60e4b925c920008978722d3 Mon Sep 17 00:00:00 2001 From: Aleksandr Emelenko Date: Wed, 10 May 2023 18:21:15 +0300 Subject: [PATCH] Disable memory init for strings Signed-off-by: Aleksandr Emelenko --- runtime/mem/mem_manager-inl.h | 5 +++-- runtime/mem/mem_manager.h | 5 ++++- runtime/object_factory-inl.h | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/runtime/mem/mem_manager-inl.h b/runtime/mem/mem_manager-inl.h index d7d83423e..d425372f1 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 e4264763f..878e7b466 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 33f74fe35..cba1d6317 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, -- Gitee