From 9c4b0beee94d7f148674363769feef663b06f64e Mon Sep 17 00:00:00 2001 From: mengxiaowei Date: Tue, 8 Jul 2025 22:11:44 +0800 Subject: [PATCH] =?UTF-8?q?GetRegionDescAt=E6=9B=BF=E6=8D=A2GetAliveRegion?= =?UTF-8?q?DescAt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: https://gitee.com/openharmony/arkcompiler_ets_runtime/issues/ICKWM7 Signed-off-by: mengxiaowei Change-Id: If02afbc8d324c86b00866626d81ff2d5caa0136e --- .../heap/allocator/region_manager.cpp | 6 ++-- .../heap/allocator/region_manager.h | 8 ++--- .../heap/allocator/region_space.h | 22 ++++++------- .../allocator/tests/region_space_test.cpp | 32 +++++++++---------- .../heap/collector/trace_collector.cpp | 6 ++-- .../heap/collector/trace_collector.h | 2 +- common_components/heap/verification.cpp | 10 +++--- .../heap/w_collector/copy_barrier.cpp | 2 +- .../heap/w_collector/post_trace_barrier.cpp | 2 +- .../heap/w_collector/preforward_barrier.cpp | 2 +- .../heap/w_collector/remark_barrier.cpp | 2 +- .../w_collector/tests/w_collector_test.cpp | 2 +- .../heap/w_collector/w_collector.cpp | 12 +++---- .../serialize/serialize_utils.cpp | 5 +-- 14 files changed, 57 insertions(+), 56 deletions(-) diff --git a/common_components/heap/allocator/region_manager.cpp b/common_components/heap/allocator/region_manager.cpp index 4f5bdc9c4d..bd3fc50d4e 100755 --- a/common_components/heap/allocator/region_manager.cpp +++ b/common_components/heap/allocator/region_manager.cpp @@ -486,7 +486,7 @@ size_t RegionManager::ReleaseRegion(RegionDesc* region) void RegionManager::CountLiveObject(const BaseObject* obj) { - RegionDesc* region = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); region->AddLiveByteCount(obj->GetSize()); } @@ -525,7 +525,7 @@ void RegionManager::ClearRSet() void RegionManager::ForEachObjectUnsafe(const std::function& visitor) const { for (uintptr_t regionAddr = regionHeapStart_; regionAddr < inactiveZone_;) { - RegionDesc* region = RegionDesc::GetRegionDescAt(regionAddr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(regionAddr); uintptr_t next = region->GetRegionEnd(); regionAddr = next; if (!region->IsValidRegion() || region->IsFreeRegion() || region -> IsGarbageRegion()) { @@ -866,7 +866,7 @@ void RegionManager::DumpRegionDesc() const return; } for (uintptr_t regionAddr = regionHeapStart; regionAddr < inactiveZone;) { - RegionDesc* region = RegionDesc::GetRegionDescAt(regionAddr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(regionAddr); regionAddr = region->GetRegionEnd(); if (!region->IsFreeRegion()) { region->DumpRegionDesc(ALLOC); diff --git a/common_components/heap/allocator/region_manager.h b/common_components/heap/allocator/region_manager.h index 422f941dc8..4f268d6b2d 100755 --- a/common_components/heap/allocator/region_manager.h +++ b/common_components/heap/allocator/region_manager.h @@ -114,7 +114,7 @@ public: RegionDesc* GetFirstRegion() const { if (regionHeapStart_ < inactiveZone_) { - return RegionDesc::GetRegionDescAt(regionHeapStart_); + return RegionDesc::GetAliveRegionDescAt(regionHeapStart_); } return nullptr; } @@ -388,7 +388,7 @@ public: { HeapAddress address = region->GetRegionEnd(); if (address < inactiveZone_.load()) { - return RegionDesc::GetRegionDescAt(address); + return RegionDesc::GetAliveRegionDescAt(address); } return nullptr; } @@ -514,14 +514,14 @@ public: void MarkJitFortMemInstalled(BaseObject *obj) { std::lock_guard guard(awaitingJitFortMutex_); - RegionDesc::GetRegionDescAt(reinterpret_cast(obj))->SetJitFortAwaitInstallFlag(false); + RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj))->SetJitFortAwaitInstallFlag(false); awaitingJitFort_.erase(obj); } void MarkJitFortMemAwaitingInstall(BaseObject *obj) { std::lock_guard guard(awaitingJitFortMutex_); - RegionDesc::GetRegionDescAt(reinterpret_cast(obj))->SetJitFortAwaitInstallFlag(true); + RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj))->SetJitFortAwaitInstallFlag(true); awaitingJitFort_.insert(obj); } diff --git a/common_components/heap/allocator/region_space.h b/common_components/heap/allocator/region_space.h index 1689991e19..61ee9d41f9 100755 --- a/common_components/heap/allocator/region_space.h +++ b/common_components/heap/allocator/region_space.h @@ -288,63 +288,63 @@ public: // markObj static bool MarkObject(const BaseObject* obj) { - RegionDesc* regionInfo = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* regionInfo = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); return regionInfo->MarkObject(obj); } static bool ResurrentObject(const BaseObject* obj) { - RegionDesc* regionInfo = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* regionInfo = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); return regionInfo->ResurrentObject(obj); } static bool EnqueueObject(const BaseObject* obj) { - RegionDesc* regionInfo = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* regionInfo = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); return regionInfo->EnqueueObject(obj); } static bool IsMarkedObject(const BaseObject* obj) { - RegionDesc* regionInfo = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* regionInfo = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); return regionInfo->IsMarkedObject(obj); } static bool IsResurrectedObject(const BaseObject* obj) { - RegionDesc* regionInfo = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* regionInfo = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); return regionInfo->IsResurrectedObject(obj); } static bool IsEnqueuedObject(const BaseObject* obj) { - RegionDesc* regionInfo = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* regionInfo = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); return regionInfo->IsEnqueuedObject(obj); } static bool IsNewObjectSinceTrace(const BaseObject* object) { - RegionDesc* region = RegionDesc::GetRegionDescAt(reinterpret_cast(object)); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(object)); ASSERT_LOGF(region != nullptr, "region is nullptr"); return region->IsNewObjectSinceTrace(object); } static bool IsReadOnlyObject(const BaseObject* object) { - RegionDesc* region = RegionDesc::GetRegionDescAt(reinterpret_cast(object)); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(object)); ASSERT_LOGF(region != nullptr, "region is nullptr"); return region->IsReadOnlyRegion(); } static bool IsYoungSpaceObject(const BaseObject* object) { - RegionDesc* region = RegionDesc::GetRegionDescAt(reinterpret_cast(object)); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(object)); ASSERT_LOGF(region != nullptr, "region is nullptr"); return region->IsInYoungSpace(); } void AddRawPointerObject(BaseObject* obj) { - RegionDesc* region = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); region->IncRawPointerObjectCount(); if (region->IsFromRegion() && fromSpace_.TryDeleteFromRegion(region, RegionDesc::RegionType::FROM_REGION, RegionDesc::RegionType::RAW_POINTER_REGION)) { @@ -358,7 +358,7 @@ public: void RemoveRawPointerObject(BaseObject* obj) { - RegionDesc* region = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); region->DecRawPointerObjectCount(); } diff --git a/common_components/heap/allocator/tests/region_space_test.cpp b/common_components/heap/allocator/tests/region_space_test.cpp index 9da2659698..386cba7524 100755 --- a/common_components/heap/allocator/tests/region_space_test.cpp +++ b/common_components/heap/allocator/tests/region_space_test.cpp @@ -119,7 +119,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocRegion_PhaseEnum) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetTraceLine(), region->GetRegionStart()); EXPECT_EQ(region->GetCopyLine(), std::numeric_limits::max()); EXPECT_EQ(region->GetFixLine(), std::numeric_limits::max()); @@ -132,7 +132,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocRegion_PhaseMark) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetTraceLine(), region->GetRegionStart()); EXPECT_EQ(region->GetCopyLine(), std::numeric_limits::max()); EXPECT_EQ(region->GetFixLine(), std::numeric_limits::max()); @@ -145,7 +145,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocRegion_PhaseRemarkStab) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetTraceLine(), region->GetRegionStart()); EXPECT_EQ(region->GetCopyLine(), std::numeric_limits::max()); EXPECT_EQ(region->GetFixLine(), std::numeric_limits::max()); @@ -158,7 +158,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocRegion_PhasePostMark) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetTraceLine(), region->GetRegionStart()); EXPECT_EQ(region->GetCopyLine(), std::numeric_limits::max()); EXPECT_EQ(region->GetFixLine(), std::numeric_limits::max()); @@ -171,7 +171,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocRegion_PhasePrecopy) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetCopyLine(), region->GetRegionStart()); } @@ -182,7 +182,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocRegion_PhaseCopy) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetCopyLine(), region->GetRegionStart()); } @@ -193,7 +193,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocRegion_PhaseFix) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetCopyLine(), region->GetRegionStart()); EXPECT_EQ(region->GetFixLine(), region->GetRegionStart()); } @@ -205,7 +205,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocRegion_PhaseUndef) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetCopyLine(), std::numeric_limits::max()); EXPECT_EQ(region->GetFixLine(), std::numeric_limits::max()); } @@ -217,7 +217,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocPinnedRegion_PhaseEnum) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocPinnedRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetTraceLine(), region->GetRegionStart()); EXPECT_EQ(region->GetCopyLine(), std::numeric_limits::max()); EXPECT_EQ(region->GetFixLine(), std::numeric_limits::max()); @@ -230,7 +230,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocPinnedRegion_PhaseMark) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocPinnedRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetTraceLine(), region->GetRegionStart()); EXPECT_EQ(region->GetCopyLine(), std::numeric_limits::max()); EXPECT_EQ(region->GetFixLine(), std::numeric_limits::max()); @@ -243,7 +243,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocPinnedRegion_PhaseRemarkStab) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocPinnedRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetTraceLine(), region->GetRegionStart()); EXPECT_EQ(region->GetCopyLine(), std::numeric_limits::max()); EXPECT_EQ(region->GetFixLine(), std::numeric_limits::max()); @@ -256,7 +256,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocPinnedRegion_PhasePostMark) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocPinnedRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetTraceLine(), region->GetRegionStart()); EXPECT_EQ(region->GetCopyLine(), std::numeric_limits::max()); EXPECT_EQ(region->GetFixLine(), std::numeric_limits::max()); @@ -269,7 +269,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocPinnedRegion_PhasePrecopy) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocPinnedRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetCopyLine(), region->GetRegionStart()); } @@ -280,7 +280,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocPinnedRegion_PhaseCopy) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocPinnedRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetCopyLine(), region->GetRegionStart()); } @@ -291,7 +291,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocPinnedRegion_PhaseFix) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocPinnedRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetCopyLine(), region->GetRegionStart()); EXPECT_EQ(region->GetFixLine(), region->GetRegionStart()); } @@ -303,7 +303,7 @@ HWTEST_F_L0(RegionSpaceTest, AllocPinnedRegion_PhaseUndef) RegionSpace& theAllocator = reinterpret_cast(Heap::GetHeap().GetAllocator()); uintptr_t addr = theAllocator.AllocPinnedRegion(); ASSERT_NE(addr, 0); - RegionDesc* region = RegionDesc::GetRegionDescAt(addr); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(addr); EXPECT_EQ(region->GetCopyLine(), std::numeric_limits::max()); EXPECT_EQ(region->GetFixLine(), std::numeric_limits::max()); } diff --git a/common_components/heap/collector/trace_collector.cpp b/common_components/heap/collector/trace_collector.cpp index aa9add28f7..02c30e7206 100755 --- a/common_components/heap/collector/trace_collector.cpp +++ b/common_components/heap/collector/trace_collector.cpp @@ -192,7 +192,7 @@ void TraceCollector::ProcessMarkStack([[maybe_unused]] uint32_t threadIndex, Tas // get next object from work stack. BaseObject *obj = workStack.back(); workStack.pop_back(); - auto region = RegionDesc::GetRegionDescAt(reinterpret_cast((void *)obj)); + auto region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast((void *)obj)); region->AddLiveByteCount(obj->GetSize()); [[maybe_unused]] auto beforeSize = workStack.count(); TraceObjectRefFields(obj, &visitor); @@ -338,7 +338,7 @@ bool TraceCollector::AddWeakStackClearWork(WeakStack &weakStack, bool TraceCollector::PushRootToWorkStack(RootSet *workStack, BaseObject *obj) { - RegionDesc *regionInfo = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc *regionInfo = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); if (gcReason_ == GCReason::GC_REASON_YOUNG && regionInfo->IsInOldSpace()) { DLOG(ENUM, "enum: skip old object %p<%p>(%zu)", obj, obj->GetTypeInfo(), obj->GetSize()); return false; @@ -486,7 +486,7 @@ void TraceCollector::MarkRememberSetImpl(BaseObject* object, WorkStack& workStac object->ForEachRefField([this, &workStack, &object](RefField<>& field) { BaseObject* targetObj = field.GetTargetObject(); if (Heap::IsHeapAddress(targetObj)) { - RegionDesc* region = RegionDesc::GetRegionDescAt(reinterpret_cast(targetObj)); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(targetObj)); if (region->IsInYoungSpace() && !region->IsNewObjectSinceTrace(targetObj) && !this->MarkObject(targetObj)) { diff --git a/common_components/heap/collector/trace_collector.h b/common_components/heap/collector/trace_collector.h index ca4336e178..98b8aa7fba 100755 --- a/common_components/heap/collector/trace_collector.h +++ b/common_components/heap/collector/trace_collector.h @@ -179,7 +179,7 @@ public: inline bool IsToObject(const BaseObject* obj) const { - return RegionDesc::GetRegionDescAt(reinterpret_cast(obj))->IsToRegion(); + return RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj))->IsToRegion(); } inline bool IsToVersion(const BaseObject* obj) const diff --git a/common_components/heap/verification.cpp b/common_components/heap/verification.cpp index 440ec9715e..fa116591a8 100755 --- a/common_components/heap/verification.cpp +++ b/common_components/heap/verification.cpp @@ -99,7 +99,7 @@ std::string GetObjectInfo(const BaseObject* obj) if (!Heap::IsHeapAddress(obj)) { s << "Skip: Object is not in heap range" << std::endl; } else { - auto region = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + auto region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); s << std::hex << "Type: 0x" << (int) region->GetRegionType() << ", " << "Base: 0x" << region->GetRegionBase() << ", " << "Start: 0x" << region->GetRegionStart() << ", " @@ -144,7 +144,7 @@ void IsValidRef(const BaseObject* obj, const RefField<>& ref) << "Object address: 0x" << reinterpret_cast(refObj) << "," << "Heap range: [0x" << Heap::heapStartAddr_ << ", 0x" << Heap::heapCurrentEnd_ << "]"; - auto region = RegionDesc::GetRegionDescAt(reinterpret_cast(refObj)); + auto region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(refObj)); CHECKF(region->GetRegionType() != RegionDesc::RegionType::GARBAGE_REGION) << CONTEXT << "Object: " << GetObjectInfo(obj) << std::endl @@ -212,7 +212,7 @@ public: // check retraced objects, so they must be in one of the states below auto refObj = ref.GetTargetObject(); - RegionDesc *region = RegionDesc::GetRegionDescAt(reinterpret_cast(refObj)); + RegionDesc *region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(refObj)); // obj == nullptr means that during EnumStrongRoots, there can no longer // be any objects in fromSpace, because they would all have been copied @@ -265,7 +265,7 @@ public: { IsValidRef(obj, ref); - auto refRegion = RegionDesc::GetRegionDescAt(reinterpret_cast(ref.GetTargetObject())); + auto refRegion = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(ref.GetTargetObject())); CHECKF(refRegion->GetRegionType() != RegionDesc::RegionType::FROM_REGION) << CONTEXT << "Object: " << GetObjectInfo(obj) << std::endl @@ -289,7 +289,7 @@ public: } auto regionType = - RegionDesc::GetRegionDescAt(reinterpret_cast(ref.GetTargetObject()))->GetRegionType(); + RegionDesc::GetAliveRegionDescAt(reinterpret_cast(ref.GetTargetObject()))->GetRegionType(); if (regionType == RegionDesc::RegionType::RECENT_PINNED_REGION || regionType == RegionDesc::RegionType::FULL_PINNED_REGION || regionType == RegionDesc::RegionType::FIXED_PINNED_REGION || diff --git a/common_components/heap/w_collector/copy_barrier.cpp b/common_components/heap/w_collector/copy_barrier.cpp index b09ac3ad8d..d1c4abe148 100755 --- a/common_components/heap/w_collector/copy_barrier.cpp +++ b/common_components/heap/w_collector/copy_barrier.cpp @@ -62,7 +62,7 @@ BaseObject* CopyBarrier::ReadStringTableStaticRef(RefField& field) const auto isSurvivor = [](BaseObject* obj) { auto gcReason = Heap::GetHeap().GetGCReason(); RegionDesc *regionInfo = - RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); return ((gcReason == GC_REASON_YOUNG && !regionInfo->IsInYoungSpace()) || regionInfo->IsNewObjectSinceTrace(obj) || regionInfo->IsToRegion() || regionInfo->IsMarkedObject(obj)); diff --git a/common_components/heap/w_collector/post_trace_barrier.cpp b/common_components/heap/w_collector/post_trace_barrier.cpp index 16e039022d..bcefbbac3f 100755 --- a/common_components/heap/w_collector/post_trace_barrier.cpp +++ b/common_components/heap/w_collector/post_trace_barrier.cpp @@ -35,7 +35,7 @@ BaseObject* PostTraceBarrier::ReadStringTableStaticRef(RefField &field) c { auto isSurvivor = [](BaseObject* obj) { const GCReason gcReason = Heap::GetHeap().GetGCReason(); - RegionDesc* region = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); return (gcReason == GC_REASON_YOUNG && !region->IsInYoungSpace()) || region->IsMarkedObject(obj) diff --git a/common_components/heap/w_collector/preforward_barrier.cpp b/common_components/heap/w_collector/preforward_barrier.cpp index 07bd39f084..530a0e24af 100755 --- a/common_components/heap/w_collector/preforward_barrier.cpp +++ b/common_components/heap/w_collector/preforward_barrier.cpp @@ -63,7 +63,7 @@ BaseObject* PreforwardBarrier::ReadStringTableStaticRef(RefField& field) auto isSurvivor = [](BaseObject* obj) { auto gcReason = Heap::GetHeap().GetGCReason(); RegionDesc *regionInfo = - RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); return ((gcReason == GC_REASON_YOUNG && !regionInfo->IsInYoungSpace()) || regionInfo->IsNewObjectSinceTrace(obj) || regionInfo->IsToRegion() || regionInfo->IsMarkedObject(obj)); diff --git a/common_components/heap/w_collector/remark_barrier.cpp b/common_components/heap/w_collector/remark_barrier.cpp index d52f4ac097..6a13128369 100644 --- a/common_components/heap/w_collector/remark_barrier.cpp +++ b/common_components/heap/w_collector/remark_barrier.cpp @@ -36,7 +36,7 @@ BaseObject* RemarkBarrier::ReadStringTableStaticRef(RefField &field) cons { auto isSurvivor = [](BaseObject* obj) { const GCReason gcReason = Heap::GetHeap().GetGCReason(); - RegionDesc* region = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); return (gcReason == GC_REASON_YOUNG && !region->IsInYoungSpace()) || region->IsMarkedObject(obj) diff --git a/common_components/heap/w_collector/tests/w_collector_test.cpp b/common_components/heap/w_collector/tests/w_collector_test.cpp index 1534f3d9b1..90446d490f 100644 --- a/common_components/heap/w_collector/tests/w_collector_test.cpp +++ b/common_components/heap/w_collector/tests/w_collector_test.cpp @@ -86,7 +86,7 @@ HWTEST_F_L0(WCollectorTest, IsUnmovableFromObjectTest2) new (obj) BaseObject(); - RegionDesc *region = RegionDesc::GetRegionDescAt(addr); + RegionDesc *region = RegionDesc::GetAliveRegionDescAt(addr); bool isMarked = region->GetOrAllocResurrectBitmap()->MarkBits(0); region->SetResurrectedRegionFlag(1); diff --git a/common_components/heap/w_collector/w_collector.cpp b/common_components/heap/w_collector/w_collector.cpp index 70a1355518..7294dcfd9e 100755 --- a/common_components/heap/w_collector/w_collector.cpp +++ b/common_components/heap/w_collector/w_collector.cpp @@ -39,7 +39,7 @@ bool WCollector::IsUnmovableFromObject(BaseObject* obj) const } RegionDesc* regionInfo = nullptr; - regionInfo = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + regionInfo = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); return regionInfo->IsUnmovableFromRegion(); } @@ -47,7 +47,7 @@ bool WCollector::MarkObject(BaseObject* obj, size_t cellCount) const { bool marked = RegionSpace::MarkObject(obj); if (!marked) { - RegionDesc* region = RegionDesc::GetRegionDescAt(reinterpret_cast(obj)); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(obj)); (void)region; if (region->IsGarbageRegion()) { @@ -163,7 +163,7 @@ static void TraceRefField(BaseObject *obj, RefField<> &field, WorkStack &workSta // field is tagged object, should be in heap DCHECK_CC(Heap::IsHeapAddress(targetObj)); - auto targetRegion = RegionDesc::GetRegionDescAt(reinterpret_cast((void*)targetObj)); + auto targetRegion = RegionDesc::GetAliveRegionDescAt(reinterpret_cast((void*)targetObj)); if (gcReason != GC_REASON_YOUNG && oldField.IsWeak()) { DLOG(TRACE, "trace: skip weak obj when full gc, object: %p@%p, targetObj: %p", obj, &field, targetObj); weakStack.push_back(&field); @@ -238,8 +238,8 @@ void WCollector::FixRefField(BaseObject* obj, RefField<>& field) const // update remember set BaseObject* toObj = latest == nullptr ? targetObj : latest; - RegionDesc* objRegion = RegionDesc::GetRegionDescAt(reinterpret_cast((void*)obj)); - RegionDesc* refRegion = RegionDesc::GetRegionDescAt(reinterpret_cast((void*)toObj)); + RegionDesc* objRegion = RegionDesc::GetAliveRegionDescAt(reinterpret_cast((void*)obj)); + RegionDesc* refRegion = RegionDesc::GetAliveRegionDescAt(reinterpret_cast((void*)toObj)); if (!objRegion->IsInRecentSpace() && refRegion->IsInRecentSpace()) { if (objRegion->MarkRSetCardTable(obj)) { DLOG(TRACE, "fix phase update point-out remember set of region %p, obj %p, ref: %p<%p>", @@ -763,7 +763,7 @@ void WCollector::ProcessStringTable() #endif WeakRefFieldVisitor weakVisitor = [this](RefField<> &refField) -> bool { auto isSurvivor = [this](BaseObject* oldObj) { - RegionDesc* region = RegionDesc::GetRegionDescAt(reinterpret_cast(oldObj)); + RegionDesc* region = RegionDesc::GetAliveRegionDescAt(reinterpret_cast(oldObj)); return (gcReason_ == GC_REASON_YOUNG && !region->IsInYoungSpace()) || region->IsMarkedObject(oldObj) || region->IsNewObjectSinceTrace(oldObj) diff --git a/common_components/serialize/serialize_utils.cpp b/common_components/serialize/serialize_utils.cpp index ae0902c833..a031bdf7cd 100755 --- a/common_components/serialize/serialize_utils.cpp +++ b/common_components/serialize/serialize_utils.cpp @@ -21,8 +21,9 @@ namespace common { SerializedBaseObjectSpace SerializeUtils::GetSerializeObjectSpace(uintptr_t obj) { - RegionDesc *info = RegionDesc::GetRegionDescAt(obj); - RegionDesc::RegionType type = info->GetRegionType(); + RegionDesc::InlinedRegionMetaData *objMetaRegion = + RegionDesc::InlinedRegionMetaData::GetInlinedRegionMetaData(obj); + RegionDesc::RegionType type = objMetaRegion->GetRegionType(); switch (type) { case RegionDesc::RegionType::THREAD_LOCAL_REGION: case RegionDesc::RegionType::THREAD_LOCAL_OLD_REGION: -- Gitee