mirror of
https://gitee.com/openharmony/arkcompiler_ets_runtime
synced 2024-10-07 16:13:49 +00:00
!81 modify HeapObjectSize to CommittedSize
Merge pull request !81 from linxiang8/master
This commit is contained in:
commit
be163747fd
@ -152,10 +152,7 @@ void Heap::CollectGarbage(TriggerGCType gcType)
|
||||
SetNewSpaceMaximumCapacity(SEMI_SPACE_SIZE_CAPACITY);
|
||||
ResetAppStartup();
|
||||
} else {
|
||||
if (CheckAndTriggerCompressGC()) {
|
||||
compressCollector_->RunPhases();
|
||||
RecomputeLimits();
|
||||
} else {
|
||||
if (!CheckAndTriggerCompressGC()) {
|
||||
semiSpaceCollector_->RunPhases();
|
||||
}
|
||||
}
|
||||
@ -233,7 +230,7 @@ void Heap::RecomputeLimits()
|
||||
|
||||
bool Heap::CheckAndTriggerOldGC()
|
||||
{
|
||||
if (oldSpace_->GetHeapObjectSize() <= oldSpaceAllocLimit_) {
|
||||
if (oldSpace_->GetCommittedSize() <= oldSpaceAllocLimit_) {
|
||||
return false;
|
||||
}
|
||||
CollectGarbage(TriggerGCType::OLD_GC);
|
||||
@ -242,7 +239,7 @@ bool Heap::CheckAndTriggerOldGC()
|
||||
|
||||
bool Heap::CheckAndTriggerCompressGC()
|
||||
{
|
||||
if (oldSpace_->GetHeapObjectSize() <= oldSpaceAllocLimit_) {
|
||||
if (oldSpace_->GetCommittedSize() <= oldSpaceAllocLimit_) {
|
||||
return false;
|
||||
}
|
||||
CollectGarbage(TriggerGCType::COMPRESS_FULL_GC);
|
||||
@ -251,7 +248,7 @@ bool Heap::CheckAndTriggerCompressGC()
|
||||
|
||||
bool Heap::CheckAndTriggerNonMovableGC()
|
||||
{
|
||||
if (nonMovableSpace_->GetHeapObjectSize() <= DEFAULT_NON_MOVABLE_SPACE_LIMIT) {
|
||||
if (nonMovableSpace_->GetCommittedSize() <= DEFAULT_NON_MOVABLE_SPACE_LIMIT) {
|
||||
return false;
|
||||
}
|
||||
CollectGarbage(TriggerGCType::NON_MOVE_GC);
|
||||
|
@ -24,7 +24,7 @@
|
||||
#include "ecmascript/mem/tlab_allocator.h"
|
||||
|
||||
namespace panda::ecmascript {
|
||||
static constexpr size_t SEMIGC_YOUNG_BUFFER_SIZE = 32 * 1024;
|
||||
static constexpr size_t YOUNG_BUFFER_SIZE = 32 * 1024;
|
||||
static constexpr size_t OLD_BUFFER_SIZE = 255 * 1024;
|
||||
|
||||
TlabAllocator::TlabAllocator(Heap *heap, TriggerGCType gcType)
|
||||
@ -35,11 +35,15 @@ TlabAllocator::TlabAllocator(Heap *heap, TriggerGCType gcType)
|
||||
|
||||
TlabAllocator::~TlabAllocator()
|
||||
{
|
||||
FreeObject::FillFreeObject(heap_->GetEcmaVM(), youngTop_, youngEnd_ - youngTop_);
|
||||
if (gcType_ == TriggerGCType::SEMI_GC) {
|
||||
heap_->GetSemiSpaceCollector()->oldSpaceAllocator_.Free(oldTop_, oldEnd_);
|
||||
} else if (gcType_ == TriggerGCType::COMPRESS_FULL_GC) {
|
||||
heap_->GetCompressCollector()->oldSpaceAllocator_.Free(oldTop_, oldEnd_);
|
||||
if (youngTop_ != 0 && youngTop_ != youngEnd_) {
|
||||
FreeObject::FillFreeObject(heap_->GetEcmaVM(), youngTop_, youngEnd_ - youngTop_);
|
||||
}
|
||||
if (oldTop_ != 0 && oldTop_ != oldEnd_) {
|
||||
if (gcType_ == TriggerGCType::SEMI_GC) {
|
||||
heap_->GetSemiSpaceCollector()->oldSpaceAllocator_.Free(oldTop_, oldEnd_);
|
||||
} else if (gcType_ == TriggerGCType::COMPRESS_FULL_GC) {
|
||||
heap_->GetCompressCollector()->oldSpaceAllocator_.Free(oldTop_, oldEnd_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -114,7 +118,7 @@ bool TlabAllocator::ExpandYoung()
|
||||
{
|
||||
uintptr_t buffer = 0;
|
||||
if (gcType_ == TriggerGCType::SEMI_GC) {
|
||||
buffer = heap_->GetSemiSpaceCollector()->AllocateYoung(SEMIGC_YOUNG_BUFFER_SIZE);
|
||||
buffer = heap_->GetSemiSpaceCollector()->AllocateYoung(YOUNG_BUFFER_SIZE);
|
||||
} else {
|
||||
UNREACHABLE();
|
||||
}
|
||||
@ -124,7 +128,7 @@ bool TlabAllocator::ExpandYoung()
|
||||
}
|
||||
youngBegin_ = buffer;
|
||||
youngTop_ = youngBegin_;
|
||||
youngEnd_ = youngBegin_ + SEMIGC_YOUNG_BUFFER_SIZE;
|
||||
youngEnd_ = youngBegin_ + YOUNG_BUFFER_SIZE;
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -132,7 +136,7 @@ bool TlabAllocator::ExpandOld()
|
||||
{
|
||||
uintptr_t buffer = 0;
|
||||
if (gcType_ == TriggerGCType::SEMI_GC) {
|
||||
buffer = heap_->GetSemiSpaceCollector()->AllocateOld(OLD_BUFFER_SIZE);
|
||||
buffer = heap_->GetSemiSpaceCollector()->AllocateOld(YOUNG_BUFFER_SIZE);
|
||||
} else if (gcType_ == TriggerGCType::COMPRESS_FULL_GC) {
|
||||
buffer = heap_->GetCompressCollector()->AllocateOld(OLD_BUFFER_SIZE);
|
||||
} else {
|
||||
@ -144,7 +148,13 @@ bool TlabAllocator::ExpandOld()
|
||||
}
|
||||
oldBegin_ = buffer;
|
||||
oldTop_ = oldBegin_;
|
||||
oldEnd_ = oldBegin_ + OLD_BUFFER_SIZE;
|
||||
if (gcType_ == TriggerGCType::SEMI_GC) {
|
||||
oldEnd_ = oldBegin_ + YOUNG_BUFFER_SIZE;
|
||||
} else if (gcType_ == TriggerGCType::COMPRESS_FULL_GC) {
|
||||
oldEnd_ = oldBegin_ + OLD_BUFFER_SIZE;
|
||||
} else {
|
||||
UNREACHABLE();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} // namespace panda::ecmascript
|
||||
|
@ -290,6 +290,7 @@ JSHandle<JSObject> ObjectFactory::NewJSObject(const JSHandle<JSHClass> &jshclass
|
||||
NewObjectHook();
|
||||
JSHandle<JSObject> obj(thread_, JSObject::Cast(NewDynObject(jshclass, JSHClass::DEFAULT_CAPACITY_OF_IN_OBJECTS)));
|
||||
JSHandle<TaggedArray> emptyArray = EmptyArray();
|
||||
Barriers::SetDynPrimitive<JSTaggedType>(*obj, ECMAObject::HASH_OFFSET, JSTaggedValue(0).GetRawData());
|
||||
obj->SetElements(thread_, emptyArray, SKIP_BARRIER);
|
||||
obj->SetProperties(thread_, emptyArray, SKIP_BARRIER);
|
||||
return obj;
|
||||
|
Loading…
Reference in New Issue
Block a user