fix warning

Signed-off-by: hanweiqi <hanweiqi3@huawei.com>
This commit is contained in:
hanweiqi 2024-06-13 14:32:41 +08:00
parent 42a04ff902
commit 45f458f9da
6 changed files with 40 additions and 37 deletions

View File

@ -30,7 +30,7 @@ constexpr size_t INITIAL_ASSERT_DATA = AssertGarbageCollectBit::Mask() |
thread_local size_t currentAssertData = INITIAL_ASSERT_DATA;
template<AssertType type, bool isAllow, bool IsDebug /* = IS_ALLOW_CHECK*/>
template<AssertType type, bool isAllow, bool IsDebug>
bool AssertScopeT<type, isAllow, IsDebug>::IsAllowed()
{
return true;

View File

@ -118,24 +118,24 @@ using AllowLocalToShareWeakRefHandle = AssertScopeT<AssertType::LOCAL_TO_SHARE_W
#endif
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CHECK_NO_GC ASSERT_PRINT(AllowGarbageCollection::IsAllowed(), "disallow execute garbage collection.");
#define CHECK_NO_GC ASSERT_PRINT(AllowGarbageCollection::IsAllowed(), "disallow execute garbage collection.")
// Some checks failed, need to check and fix
#undef CHECK_NO_GC
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CHECK_NO_GC static_cast<void>(0);
#define CHECK_NO_GC static_cast<void>(0)
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CHECK_NO_HEAP_ALLOC ASSERT_PRINT(AllowHeapAlloc::IsAllowed(), "disallow execute heap alloc.");
#define CHECK_NO_HEAP_ALLOC ASSERT_PRINT(AllowHeapAlloc::IsAllowed(), "disallow execute heap alloc.")
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CHECK_NO_HANDLE_ALLOC ASSERT_PRINT(AllowHandleAllocation::IsAllowed(), "disallow execute handle alloc.");
#define CHECK_NO_HANDLE_ALLOC ASSERT_PRINT(AllowHandleAllocation::IsAllowed(), "disallow execute handle alloc.")
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CHECK_NO_DEREF_HANDLE ASSERT_PRINT(AllowDeRefHandle::IsAllowed(), "disallow execute deref handle.");
#define CHECK_NO_DEREF_HANDLE ASSERT_PRINT(AllowDeRefHandle::IsAllowed(), "disallow execute deref handle.")
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CHECK_NO_LOCAL_TO_SHARE_WEAK_REF_HANDLE \
ASSERT_PRINT(AllowLocalToShareWeakRefHandle::IsAllowed(), "disallow local to share weak ref handle.");
ASSERT_PRINT(AllowLocalToShareWeakRefHandle::IsAllowed(), "disallow local to share weak ref handle.")
} // namespace panda::ecmascript
#endif // ECMASCRIPT_MEM_ASSERT_SCOPE_H

View File

@ -43,7 +43,7 @@ static ARK_INLINE void WriteBarrier(const JSThread *thread, void *obj, size_t of
} else if (!objectRegion->InSharedHeap() && valueRegion->InSharedSweepableSpace()) {
#ifndef NDEBUG
if (UNLIKELY(JSTaggedValue(value).IsWeakForHeapObject())) {
CHECK_NO_LOCAL_TO_SHARE_WEAK_REF_HANDLE
CHECK_NO_LOCAL_TO_SHARE_WEAK_REF_HANDLE;
}
#endif
objectRegion->InsertLocalToShareRSet(slotAddr);

View File

@ -879,7 +879,7 @@ void Heap::CollectGarbage(TriggerGCType gcType, GCReason reason)
#if defined(ECMASCRIPT_SUPPORT_CPUPROFILER)
[[maybe_unused]] GcStateScope scope(thread_);
#endif
CHECK_NO_GC
CHECK_NO_GC;
if (UNLIKELY(ShouldVerifyHeap())) {
// pre gc heap verify
LOG_ECMA(DEBUG) << "pre gc heap verify";

View File

@ -72,24 +72,26 @@ bool ParallelEvacuator::VisitBodyInObj(
bool ParallelEvacuator::UpdateNewToEdenObjectSlot(ObjectSlot &slot)
{
JSTaggedValue value(slot.GetTaggedType());
if (value.IsHeapObject()) {
TaggedObject *object = value.GetHeapObject();
Region *valueRegion = Region::ObjectAddressToRange(object);
if (!value.IsHeapObject()) {
return false;
}
TaggedObject *object = value.GetHeapObject();
Region *valueRegion = Region::ObjectAddressToRange(object);
// It is only update edenSpace object when iterate NewToEdenRSet
if (valueRegion->InEdenSpace()) {
MarkWord markWord(object);
if (markWord.IsForwardingAddress()) {
TaggedObject *dst = markWord.ToForwardingAddress();
if (value.IsWeakForHeapObject()) {
dst = JSTaggedValue(dst).CreateAndGetWeakRef().GetRawTaggedObject();
}
slot.Update(dst);
} else {
if (value.IsWeakForHeapObject()) {
slot.Clear();
}
}
// It is only update edenSpace object when iterate NewToEdenRSet
if (!valueRegion->InEdenSpace()) {
return false;
}
MarkWord markWord(object);
if (markWord.IsForwardingAddress()) {
TaggedObject *dst = markWord.ToForwardingAddress();
if (value.IsWeakForHeapObject()) {
dst = JSTaggedValue(dst).CreateAndGetWeakRef().GetRawTaggedObject();
}
slot.Update(dst);
} else {
if (value.IsWeakForHeapObject()) {
slot.Clear();
}
}
return false;

View File

@ -153,19 +153,20 @@ inline void NonMovableMarker::HandleOldToNewRSet(uint32_t threadId, Region *regi
region->IterateAllOldToNewBits([this, threadId, &region, isEdenMark](void *mem) -> bool {
ObjectSlot slot(ToUintPtr(mem));
JSTaggedValue value(slot.GetTaggedType());
if (value.IsHeapObject()) {
if (value.IsWeakForHeapObject()) {
RecordWeakReference(threadId, reinterpret_cast<JSTaggedType *>(mem), region);
} else {
auto object = value.GetTaggedObject();
Region *objectRegion = Region::ObjectAddressToRange(object);
if (isEdenMark) {
if (objectRegion->InEdenSpace()) {
MarkObject(threadId, value.GetTaggedObject());
}
} else {
if (!value.IsHeapObject()) {
return true;
}
if (value.IsWeakForHeapObject()) {
RecordWeakReference(threadId, reinterpret_cast<JSTaggedType *>(mem), region);
} else {
auto object = value.GetTaggedObject();
Region *objectRegion = Region::ObjectAddressToRange(object);
if (isEdenMark) {
if (objectRegion->InEdenSpace()) {
MarkObject(threadId, value.GetTaggedObject());
}
} else {
MarkObject(threadId, value.GetTaggedObject());
}
}
return true;