From 6fac0dece48d0085f294d1f3a5e2ef80e18ba7d4 Mon Sep 17 00:00:00 2001 From: Malinin Andrey Date: Wed, 2 Aug 2023 12:16:23 +0300 Subject: [PATCH 1/2] Refactoring ClassAddr Signed-off-by: Malinin Andrey --- runtime/ecma_language_context.cpp | 4 ++-- runtime/mem/ecma_reference_processor.cpp | 6 +++--- runtime/mem/tagged_object-inl.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/runtime/ecma_language_context.cpp b/runtime/ecma_language_context.cpp index 8f1fe7006..5df9d1131 100644 --- a/runtime/ecma_language_context.cpp +++ b/runtime/ecma_language_context.cpp @@ -47,8 +47,8 @@ std::pair EcmaLanguageContext::GetCatchMethodAndOffset(Metho if (catch_method->IsNative()) { continue; } - catch_offset = catch_method->FindCatchBlock(js_thread->GetException().GetTaggedObject()->ClassAddr(), - stack.GetBytecodePc()); + catch_offset = catch_method->FindCatchBlock( + js_thread->GetException().GetTaggedObject()->AtomicClassAddr(), stack.GetBytecodePc()); if (catch_offset != panda_file::INVALID_OFFSET) { break; } diff --git a/runtime/mem/ecma_reference_processor.cpp b/runtime/mem/ecma_reference_processor.cpp index ca91e3689..60cea37c3 100644 --- a/runtime/mem/ecma_reference_processor.cpp +++ b/runtime/mem/ecma_reference_processor.cpp @@ -70,9 +70,9 @@ bool EcmaReferenceProcessor::IsReference([[maybe_unused]] const BaseClass *base_ LOG(DEBUG, REF_PROC) << "Skip reference: " << ref << " because it's G1 with phase: " << static_cast(phase); return false; } - ASSERT(ref->ClassAddr()->IsDynamicClass()); + ASSERT(ref->AtomicClassAddr()->IsDynamicClass()); - auto *hcls = panda::ecmascript::JSHClass::FromHClass(ref->ClassAddr()); + auto *hcls = panda::ecmascript::JSHClass::FromHClass(ref->AtomicClassAddr()); if (!hcls->IsWeakContainer()) { return false; } @@ -124,7 +124,7 @@ void EcmaReferenceProcessor::ProcessReferences([[maybe_unused]] bool concurrent, while (!dyn_weak_references_.empty()) { ObjectHeader *reference = *dyn_weak_references_.begin(); dyn_weak_references_.erase(*dyn_weak_references_.begin()); - auto *hcls = panda::ecmascript::JSHClass::FromHClass(reference->ClassAddr()); + auto *hcls = panda::ecmascript::JSHClass::FromHClass(reference->AtomicClassAddr()); ASSERT(hcls->IsWeakContainer()); auto object_type = hcls->GetObjectType(); if (object_type == panda::ecmascript::JSType::TAGGED_ARRAY) { diff --git a/runtime/mem/tagged_object-inl.h b/runtime/mem/tagged_object-inl.h index f418ebfc7..54ae417c3 100644 --- a/runtime/mem/tagged_object-inl.h +++ b/runtime/mem/tagged_object-inl.h @@ -40,7 +40,7 @@ inline void TaggedObject::SetClass(JSHandle hclass) inline JSHClass *TaggedObject::GetClass() const { - return JSHClass::FromHClass(ObjectHeader::ClassAddr()); + return JSHClass::FromHClass(ObjectHeader::AtomicClassAddr()); } inline JSThread *TaggedObject::GetJSThread() const -- Gitee From 1d5682a45c243d68652d35e1034f31888baa9274 Mon Sep 17 00:00:00 2001 From: Malinin Andrey Date: Thu, 14 Sep 2023 14:38:18 +0300 Subject: [PATCH 2/2] Adding NoAtomicClassAddr Signed-off-by: Malinin Andrey --- runtime/ecma_language_context.cpp | 4 ++-- runtime/mem/ecma_reference_processor.cpp | 6 +++--- runtime/mem/tagged_object-inl.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/runtime/ecma_language_context.cpp b/runtime/ecma_language_context.cpp index 5df9d1131..8f1fe7006 100644 --- a/runtime/ecma_language_context.cpp +++ b/runtime/ecma_language_context.cpp @@ -47,8 +47,8 @@ std::pair EcmaLanguageContext::GetCatchMethodAndOffset(Metho if (catch_method->IsNative()) { continue; } - catch_offset = catch_method->FindCatchBlock( - js_thread->GetException().GetTaggedObject()->AtomicClassAddr(), stack.GetBytecodePc()); + catch_offset = catch_method->FindCatchBlock(js_thread->GetException().GetTaggedObject()->ClassAddr(), + stack.GetBytecodePc()); if (catch_offset != panda_file::INVALID_OFFSET) { break; } diff --git a/runtime/mem/ecma_reference_processor.cpp b/runtime/mem/ecma_reference_processor.cpp index 60cea37c3..ca91e3689 100644 --- a/runtime/mem/ecma_reference_processor.cpp +++ b/runtime/mem/ecma_reference_processor.cpp @@ -70,9 +70,9 @@ bool EcmaReferenceProcessor::IsReference([[maybe_unused]] const BaseClass *base_ LOG(DEBUG, REF_PROC) << "Skip reference: " << ref << " because it's G1 with phase: " << static_cast(phase); return false; } - ASSERT(ref->AtomicClassAddr()->IsDynamicClass()); + ASSERT(ref->ClassAddr()->IsDynamicClass()); - auto *hcls = panda::ecmascript::JSHClass::FromHClass(ref->AtomicClassAddr()); + auto *hcls = panda::ecmascript::JSHClass::FromHClass(ref->ClassAddr()); if (!hcls->IsWeakContainer()) { return false; } @@ -124,7 +124,7 @@ void EcmaReferenceProcessor::ProcessReferences([[maybe_unused]] bool concurrent, while (!dyn_weak_references_.empty()) { ObjectHeader *reference = *dyn_weak_references_.begin(); dyn_weak_references_.erase(*dyn_weak_references_.begin()); - auto *hcls = panda::ecmascript::JSHClass::FromHClass(reference->AtomicClassAddr()); + auto *hcls = panda::ecmascript::JSHClass::FromHClass(reference->ClassAddr()); ASSERT(hcls->IsWeakContainer()); auto object_type = hcls->GetObjectType(); if (object_type == panda::ecmascript::JSType::TAGGED_ARRAY) { diff --git a/runtime/mem/tagged_object-inl.h b/runtime/mem/tagged_object-inl.h index 54ae417c3..f418ebfc7 100644 --- a/runtime/mem/tagged_object-inl.h +++ b/runtime/mem/tagged_object-inl.h @@ -40,7 +40,7 @@ inline void TaggedObject::SetClass(JSHandle hclass) inline JSHClass *TaggedObject::GetClass() const { - return JSHClass::FromHClass(ObjectHeader::AtomicClassAddr()); + return JSHClass::FromHClass(ObjectHeader::ClassAddr()); } inline JSThread *TaggedObject::GetJSThread() const -- Gitee