/ark/runtime_core/runtime/tests/ |
D | pygote_space_allocator_test_base.h | 94 auto non_movable_header = panda::ObjectHeader::CreateNonMovable(cls); in InitAllocTest() 96 …ASSERT_TRUE(pygote_space_allocator->ContainObject(static_cast<ObjectHeader *>(non_movable_header))… in InitAllocTest() 97 ASSERT_TRUE(pygote_space_allocator->IsLive(static_cast<ObjectHeader *>(non_movable_header))); in InitAllocTest() 99 auto movable_header = panda::ObjectHeader::Create(cls); in InitAllocTest() 101 … ASSERT_FALSE(pygote_space_allocator->ContainObject(static_cast<ObjectHeader *>(movable_header))); in InitAllocTest() 104 …ASSERT_TRUE(pygote_space_allocator->ContainObject(static_cast<ObjectHeader *>(non_movable_header))… in InitAllocTest() 105 ASSERT_FALSE(pygote_space_allocator->IsLive(static_cast<ObjectHeader *>(non_movable_header))); in InitAllocTest() 115 auto non_movable_header = panda::ObjectHeader::CreateNonMovable(cls); in ForkedAllocTest() 117 …ASSERT_FALSE(pygote_space_allocator->ContainObject(static_cast<ObjectHeader *>(non_movable_header)… in ForkedAllocTest() 119 auto movable_header = panda::ObjectHeader::Create(cls); in ForkedAllocTest() [all …]
|
/ark/runtime_core/runtime/include/ |
D | object_header-inl.h | 26 inline bool ObjectHeader::IsInstanceOf(Class *klass) in IsInstanceOf() 33 inline T ObjectHeader::GetFieldPrimitive(size_t offset) const in GetFieldPrimitive() 40 inline void ObjectHeader::SetFieldPrimitive(size_t offset, T value) in SetFieldPrimitive() 47 inline ObjectHeader *ObjectHeader::GetFieldObject(int offset) const in GetFieldObject() 54 inline void ObjectHeader::SetFieldObject(size_t offset, ObjectHeader *value) in SetFieldObject() 60 inline T ObjectHeader::GetFieldPrimitive(const Field &field) const in GetFieldPrimitive() 66 inline void ObjectHeader::SetFieldPrimitive(const Field &field, T value) in SetFieldPrimitive() 73 inline ObjectHeader *ObjectHeader::GetFieldObject(const Field &field) const in GetFieldObject() 80 inline void ObjectHeader::SetFieldObject(const Field &field, ObjectHeader *value) in SetFieldObject() 87 inline ObjectHeader *ObjectHeader::GetFieldObject(ManagedThread *thread, const Field &field) in GetFieldObject() [all …]
|
D | object_header.h | 57 class ObjectHeader { 119 return sizeof(ObjectHeader); in ObjectHeaderSize() 124 return MEMBER_OFFSET(ObjectHeader, classWord_); in GetClassOffset() 129 return MEMBER_OFFSET(ObjectHeader, markWord_); in GetMarkWordOffset() 188 ObjectHeader *GetFieldObject(int offset) const; 191 void SetFieldObject(size_t offset, ObjectHeader *value); 200 ObjectHeader *GetFieldObject(const Field &field) const; 203 void SetFieldObject(const Field &field, ObjectHeader *value); 207 ObjectHeader *GetFieldObject(ManagedThread *thread, const Field &field); 210 void SetFieldObject(ManagedThread *thread, const Field &field, ObjectHeader *value); [all …]
|
D | object_accessor-inl.h | 31 inline ObjectHeader *ObjectAccessor::GetObject(const void *obj, size_t offset) in GetObject() 35 return reinterpret_cast<ObjectHeader *>(Get<object_pointer_type, is_volatile>(obj, offset)); in GetObject() 37 return Get<ObjectHeader *, is_volatile>(obj, offset); in GetObject() 43 inline void ObjectAccessor::SetObject(void *obj, size_t offset, ObjectHeader *value) in SetObject() 50 ObjectHeader *pre_val = GetObject<is_volatile, is_dyn>(obj, offset); in SetObject() 57 Set<ObjectHeader *, is_volatile>(obj, offset, value); in SetObject() 67 Set<ObjectHeader *, is_volatile>(obj, offset, value); in SetObject() 75 inline ObjectHeader *ObjectAccessor::GetObject([[maybe_unused]] const ManagedThread *thread, const … in GetObject() 80 return reinterpret_cast<ObjectHeader *>(Get<object_pointer_type, is_volatile>(obj, offset)); in GetObject() 82 return Get<ObjectHeader *, is_volatile>(obj, offset); in GetObject() [all …]
|
D | thread-inl.h | 62 inline void ManagedThread::PushHandleScope<ObjectHeader *>(HandleScope<ObjectHeader *> *handle_scop… 68 inline HandleScope<ObjectHeader *> *ManagedThread::PopHandleScope<ObjectHeader *>() 70 HandleScope<ObjectHeader *> *scope = object_header_handle_scopes_.back(); 76 inline HandleScope<ObjectHeader *> *ManagedThread::GetTopScope<ObjectHeader *>() const 85 inline HandleStorage<ObjectHeader *> *ManagedThread::GetHandleStorage<ObjectHeader *>() const
|
D | object_accessor.h | 25 class ObjectHeader; variable 44 static ObjectHeader *GetObject(const void *obj, size_t offset); 47 static void SetObject(void *obj, size_t offset, ObjectHeader *value); 56 static ObjectHeader *GetFieldObject(const void *obj, const Field &field); 59 static void SetFieldObject(void *obj, const Field &field, ObjectHeader *value); 63 static ObjectHeader *GetObject(const ManagedThread *thread, const void *obj, size_t offset); 66 … static void SetObject(const ManagedThread *thread, void *obj, size_t offset, ObjectHeader *value); 69 static ObjectHeader *GetFieldObject(ManagedThread *thread, const void *obj, const Field &field); 72 …static void SetFieldObject(ManagedThread *thread, void *obj, const Field &field, ObjectHeader *val… 81 … static ObjectHeader *GetFieldObject(const void *obj, int offset, std::memory_order memory_order); [all …]
|
/ark/runtime_core/runtime/mem/ |
D | object_helpers.h | 32 class ObjectHeader; variable 49 PandaString GetDebugInfoAboutObject(const ObjectHeader *header); 51 void DumpObject(ObjectHeader *object_header, std::basic_ostream<char, std::char_traits<char>> *o_st… 55 [[nodiscard]] ObjectHeader *GetForwardAddress(ObjectHeader *object_header); 63 static void TraverseAllObjects(ObjectHeader *object_header, 64 … const std::function<void(ObjectHeader *, ObjectHeader *)> &obj_visitor); 67 …static void TraverseObject(ObjectHeader *object_header, BaseClass *base_cls, const FieldVisitor &f… 70 static void TraverseArray(ObjectHeader *object_header, BaseClass *base_cls, 73 static void UpdateRefsToMovedObjects(PandaVM *vm, ObjectHeader *object, BaseClass *base_cls); 78 static void TraverseAllObjects(ObjectHeader *object_header, [all …]
|
D | object_helpers.cpp | 38 auto *obj_header = static_cast<const ObjectHeader *>(mem); in GetObjectSize() 59 PandaString GetDebugInfoAboutObject(const ObjectHeader *header) in GetDebugInfoAboutObject() 67 void DumpObject([[maybe_unused]] ObjectHeader *object_header, in DumpObject() 101 ObjectHeader *field_object = object_header->GetFieldObject(offset); in DumpObject() 168 std::function<void(Class *, ObjectHeader *, const Field *, ObjectHeader *)> field_dump( in DumpClass() 169 … [o_stream]([[maybe_unused]] Class *kls, [[maybe_unused]] ObjectHeader *obj, const Field *field, in DumpClass() 170 ObjectHeader *field_object) { in DumpClass() 177 ObjectHeader *cls_object = cls->GetManagedObject(); in DumpClass() 183 ObjectHeader *GetForwardAddress(ObjectHeader *object_header) in GetForwardAddress() 188 return reinterpret_cast<ObjectHeader *>(addr); in GetForwardAddress() [all …]
|
D | object_helpers-inl.h | 32 ALWAYS_INLINE void operator()([[maybe_unused]] Class *cls, ObjectHeader *field_object, in operator() 50 ALWAYS_INLINE void operator()([[maybe_unused]] ObjectHeader *object, ObjectHeader *field_object, in operator() 68 ALWAYS_INLINE void operator()([[maybe_unused]] ObjectHeader *array_object, in operator() 69 … [[maybe_unused]] array_size_t element_index, ObjectHeader *element_object) const in operator() 84 void TraverseFields(const Span<Field> &fields, Class *cls, ObjectHeader *object_header, in TraverseFields() 92 ObjectHeader *field_object = object_header->GetFieldObject(offset); in TraverseFields() 122 void GCStaticObjectHelpers::TraverseObject(ObjectHeader *object, BaseClass *base_cls, const FieldVi… in TraverseObject() 146 void GCStaticObjectHelpers::TraverseArray(ObjectHeader *object, BaseClass *base_cls, in TraverseArray() 156 auto *array_element = array_object->Get<ObjectHeader *>(i); in TraverseArray() 164 void GCDynamicObjectHelpers::TraverseObject(ObjectHeader *object, BaseClass *base_cls, in TraverseObject() [all …]
|
/ark/runtime_core/runtime/ |
D | monitor.h | 29 class ObjectHeader; variable 97 static Monitor::State MonitorEnter(ObjectHeader *obj, bool trylock = false); 99 static Monitor::State MonitorExit(ObjectHeader *obj); 101 static Monitor::State JniMonitorEnter(ObjectHeader *obj); 103 static Monitor::State JniMonitorExit(ObjectHeader *obj); 115 static State Wait(ObjectHeader *obj, ThreadStatus status, uint64_t timeout, uint64_t nanos, 118 static State Notify(ObjectHeader *obj); 120 static State NotifyAll(ObjectHeader *obj); 134 static bool Inflate(ObjectHeader *obj, MTManagedThread *thread); 143 static bool Deflate(ObjectHeader *obj); [all …]
|
D | object_header.cpp | 30 ObjectHeader *ObjectHeader::CreateObject(panda::BaseClass *klass, bool non_movable) in CreateObject() 44 ObjectHeader *obj {nullptr}; in CreateObject() 54 ObjectHeader *ObjectHeader::Create(BaseClass *klass) in Create() 60 ObjectHeader *ObjectHeader::CreateNonMovable(BaseClass *klass) in CreateNonMovable() 65 bool ObjectHeader::AtomicSetMark(MarkWord old_mark_word, MarkWord new_mark_word) in AtomicSetMark() 73 uint32_t ObjectHeader::GetHashCodeFromMonitor(Monitor *monitor_p) in GetHashCodeFromMonitor() 87 uint32_t ObjectHeader::GetHashCode() in GetHashCode() 127 ObjectHeader *ObjectHeader::Clone(ObjectHeader *src) in Clone() 130 return ObjectHeader::ShallowCopy(src); in Clone() 133 ObjectHeader *ObjectHeader::ShallowCopy(ObjectHeader *src) in ShallowCopy() [all …]
|
/ark/runtime_core/runtime/mem/gc/gen-gc/ |
D | gen-gc.h | 39 void InitGCBits(panda::ObjectHeader *obj_header) override; 41 void InitGCBitsForAllocationInTLAB(panda::ObjectHeader *obj_header) override; 45 void MarkReferences(PandaStackTL<ObjectHeader *> *references, GCPhase gc_phase) override; 47 void MarkObject(ObjectHeader *object_header) override; 49 bool MarkObjectIfNotMarked(ObjectHeader *object_header) override; 51 void UnMarkObject(ObjectHeader *object_header) override; 77 void MarkYoungStack(PandaStackTL<ObjectHeader *> *objects_stack); 85 …void MarkRoots(PandaStackTL<ObjectHeader *> *objects_stack, CardTableVisitFlag visit_card_table_ro… 93 void InitialMark(PandaStackTL<ObjectHeader *> *objects_stack); 99 NO_THREAD_SAFETY_ANALYSIS void ConcurrentMark(PandaStackTL<ObjectHeader *> *objects_stack, [all …]
|
D | gen-gc.cpp | 113 void GenGC<LanguageConfig>::InitGCBits(panda::ObjectHeader *obj_header) in InitGCBits() 130 void GenGC<LanguageConfig>::InitGCBitsForAllocationInTLAB(panda::ObjectHeader *obj_header) in InitGCBitsForAllocationInTLAB() 178 PandaStackTL<ObjectHeader *> objects_stack( in MarkYoung() 207 …ObjectChecker tenured_range_young_object_checker = [&young_mr](const ObjectHeader *object_header) … in MarkYoung() 211 …ObjectChecker from_object_checker = []([[maybe_unused]] const ObjectHeader *object_header) -> bool… in MarkYoung() 227 void GenGC<LanguageConfig>::MarkYoungStack(PandaStackTL<ObjectHeader *> *stack) in MarkYoungStack() 255 PandaVector<ObjectHeader *> moved_objects; in CollectYoungAndMove() 279 std::function<void(ObjectHeader * object_header)> move_visitor( in CollectYoungAndMove() 281 &young_delete_count](ObjectHeader *object_header) -> void { in CollectYoungAndMove() 287 … auto dst = reinterpret_cast<ObjectHeader *>(object_allocator->AllocateTenured(size)); in CollectYoungAndMove() [all …]
|
/ark/runtime_core/runtime/mem/gc/g1/ |
D | g1-gc.h | 42 void InitGCBits(panda::ObjectHeader *obj_header) override; 44 void InitGCBitsForAllocationInTLAB(panda::ObjectHeader *object) override; 48 void MarkReferences(PandaStackTL<ObjectHeader *> *references, GCPhase gc_phase) override; 50 void MarkObject(ObjectHeader *object_header) override; 52 bool MarkObjectIfNotMarked(ObjectHeader *object_header) override; 54 void UnMarkObject(ObjectHeader *object_header) override; 69 bool IsInCollectibleSet(ObjectHeader *obj_header) const; 86 void MarkYoungStack(PandaStackTL<ObjectHeader *> *objects_stack); 94 …void MarkRoots(PandaStackTL<ObjectHeader *> *objects_stack, CardTableVisitFlag visit_card_table_ro… 102 void InitialMark(PandaStackTL<ObjectHeader *> *objects_stack); [all …]
|
/ark/runtime_core/runtime/mem/gc/dynamic/ |
D | gc_dynamic_impl.cpp | 23 …andleObject<LANG_TYPE_DYNAMIC, false>(PandaStackTL<ObjectHeader *> *objects_stack, const ObjectHea… in HandleObject() 29 ObjectHeader *dyn_class = cls->GetManagedObject(); in HandleObject() 34 auto obj_body_size = cls->GetObjectSize() - ObjectHeader::ObjectHeaderSize(); in HandleObject() 37 size_t addr = reinterpret_cast<uintptr_t>(object) + ObjectHeader::ObjectHeaderSize(); in HandleObject() 46 ObjectHeader *object_header = tagged_value.GetHeapObject(); in HandleObject() 55 void GC::HandleClass<LANG_TYPE_DYNAMIC, false>(PandaStackTL<ObjectHeader *> *objects_stack, in HandleClass() 78 ObjectHeader *object_header = tagged_value.GetHeapObject(); in HandleClass() 86 void GC::HandleArrayClass<LANG_TYPE_DYNAMIC, false>(PandaStackTL<ObjectHeader *> *objects_stack, in HandleArrayClass() 104 ObjectHeader *element_object = array_element.GetHeapObject(); in HandleArrayClass() 112 …arkInstance<LANG_TYPE_DYNAMIC, false>(PandaStackTL<ObjectHeader *> *objects_stack, const ObjectHea… in MarkInstance()
|
/ark/runtime_core/runtime/mem/gc/stw-gc/ |
D | stw-gc.h | 39 void InitGCBits(panda::ObjectHeader *object) override; 41 void InitGCBitsForAllocationInTLAB(panda::ObjectHeader *obj_header) override; 49 void MarkStack(PandaStackTL<ObjectHeader *> *stack); 53 bool IsMarked(const ObjectHeader *object) const override; 54 void MarkObject(ObjectHeader *object) override; 55 void UnMarkObject(ObjectHeader *object_header) override; 56 void MarkReferences(PandaStackTL<ObjectHeader *> *references, GCPhase gc_phase) override;
|
D | stw-gc.cpp | 74 PandaStackTL<ObjectHeader *> objects_stack( in Mark() 102 void StwGC<LanguageConfig>::MarkStack(PandaStackTL<ObjectHeader *> *stack) in MarkStack() 129 … string_table->Sweep([this](ObjectHeader *object) { return this->marker_.MarkChecker(object); }); in SweepStringTable() 132 …string_table->Sweep([this](ObjectHeader *object) { return this->marker_.template MarkChecker<true>… in SweepStringTable() 144 …this->GetObjectAllocator()->Collect([this](ObjectHeader *object) { return this->marker_.MarkChecke… in Sweep() 152 … [this](ObjectHeader *object) { return this->marker_.template MarkChecker<true>(object); }, in Sweep() 184 void StwGC<LanguageConfig>::InitGCBits(panda::ObjectHeader *object) in InitGCBits() 198 void StwGC<LanguageConfig>::InitGCBitsForAllocationInTLAB([[maybe_unused]] panda::ObjectHeader *obj… in InitGCBitsForAllocationInTLAB() 211 void StwGC<LanguageConfig>::MarkObject(ObjectHeader *object) in MarkObject() 223 void StwGC<LanguageConfig>::UnMarkObject([[maybe_unused]] ObjectHeader *object_header) in UnMarkObject() [all …]
|
/ark/runtime_core/runtime/mem/gc/ |
D | gc.h | 141 using UpdateRefInObject = std::function<void(ObjectHeader *)>; 147 void MarkObjectHeader(ObjectHeader *object) const in MarkObjectHeader() 158 bool IsObjectHeaderMarked(ObjectHeader *object) const in IsObjectHeaderMarked() 168 bool MarkIfNotMarked(ObjectHeader *object) const in MarkIfNotMarked() 193 void Mark(ObjectHeader *object) const in Mark() 216 void UnMark(ObjectHeader *object) const in UnMark() 238 bool IsMarked(const ObjectHeader *object) const in IsMarked() 252 ObjectStatus MarkChecker(const ObjectHeader *object) const in MarkChecker() 380 virtual void InitGCBits(panda::ObjectHeader *obj_header) = 0; 385 virtual void InitGCBitsForAllocationInTLAB(panda::ObjectHeader *obj_header) = 0; [all …]
|
D | gc_root.h | 74 GCRoot(RootType type, ObjectHeader *obj); 75 GCRoot(RootType type, ObjectHeader *from_object, ObjectHeader *obj); 78 ObjectHeader *GetObjectHeader() const; 79 ObjectHeader *GetFromObjectHeader() const; 93 ObjectHeader *from_object_; 94 ObjectHeader *object_;
|
/ark/runtime_core/runtime/include/coretypes/ |
D | array.h | 49 class Array : public ObjectHeader { 53 static Array *Cast(ObjectHeader *object) in Cast() 106 ObjectHeader *GetObject(int offset) const; 109 void SetObject(size_t offset, ObjectHeader *value); 118 ObjectHeader *GetObject(size_t offset, std::memory_order memory_order) const; 121 void SetObject(size_t offset, ObjectHeader *value, std::memory_order memory_order); 127 bool CompareAndSetObject(size_t offset, ObjectHeader *old_value, ObjectHeader *new_value, 134 …ObjectHeader *CompareAndExchangeObject(size_t offset, ObjectHeader *old_value, ObjectHeader *new_v… 141 … ObjectHeader *GetAndSetObject(size_t offset, ObjectHeader *value, std::memory_order memory_order); 198 static_assert(Array::GetLengthOffset() == sizeof(ObjectHeader));
|
D | dyn_objects.h | 29 class DynClass : public ObjectHeader { 31 static DynClass *Cast(ObjectHeader *object) in Cast() 43 DynClass() : ObjectHeader() {} in DynClass() 52 class DynObject : public ObjectHeader { 54 static DynObject *Cast(ObjectHeader *object) in Cast()
|
D | array-inl.h | 44 inline ObjectHeader *Array::GetObject(int offset) const in GetObject() 51 inline void Array::SetObject(size_t offset, ObjectHeader *value) in SetObject() 70 inline ObjectHeader *Array::GetObject(size_t offset, std::memory_order memory_order) const in GetObject() 77 inline void Array::SetObject(size_t offset, ObjectHeader *value, std::memory_order memory_order) in SetObject() 93 inline bool Array::CompareAndSetObject(size_t offset, ObjectHeader *old_value, ObjectHeader *new_va… in CompareAndSetObject() 113 inline ObjectHeader *Array::CompareAndExchangeObject(size_t offset, ObjectHeader *old_value, Object… in CompareAndExchangeObject() 130 inline ObjectHeader *Array::GetAndSetObject(size_t offset, ObjectHeader *value, std::memory_order m… in GetAndSetObject() 164 …constexpr bool IS_REF = std::is_pointer_v<T> && std::is_base_of_v<ObjectHeader, std::remove_pointe… in Set() 185 …constexpr bool IS_REF = std::is_pointer_v<T> && std::is_base_of_v<ObjectHeader, std::remove_pointe… in Get() 204 …constexpr bool IS_REF = std::is_pointer_v<T> && std::is_base_of_v<ObjectHeader, std::remove_pointe… in Set() [all …]
|
/ark/runtime_core/runtime/mem/refstorage/ |
D | reference_storage.h | 26 class ObjectHeader; variable 53 [[nodiscard]] static Reference *NewStackRef(const ObjectHeader *const *object_ptr) in NewStackRef() 62 [[nodiscard]] Reference *NewRef(const ObjectHeader *object, Reference::ObjectType object_type); 66 [[nodiscard]] ObjectHeader *GetObject(const Reference *ref); 95 PandaVector<ObjectHeader *> GetAllObjects(); 120 ObjectHeader *FindLocalObject(const Reference *ref); 167 : rs_(rhs.rs_), ref_(rs_->NewRef(reinterpret_cast<ObjectHeader *>(object), type)) 174 : rs_(rs), ref_(rs_->NewRef(reinterpret_cast<ObjectHeader *>(object), type)) in rs_() 191 ref_ = rs_->NewRef(reinterpret_cast<ObjectHeader *>(object), type);
|
D | ref_block.cpp | 31 Reference *RefBlock::AddRef(const ObjectHeader *object, Reference::ObjectType type) in AddRef() 48 auto index = (ref_ptr - block_ptr) / sizeof(ObjectPointer<ObjectHeader>); in Remove() 63 auto *obj = object_pointer.ReinterpretCast<ObjectHeader *>(); in VisitObjects() 81 auto *object = object_pointer.ReinterpretCast<ObjectHeader *>(); in UpdateMovedRefs() 82 auto obj = reinterpret_cast<ObjectHeader *>(object); in UpdateMovedRefs() 85 ObjectHeader *forward_address = GetForwardAddress(obj); in UpdateMovedRefs() 86 block->refs_[index] = reinterpret_cast<ObjectHeader *>(forward_address); in UpdateMovedRefs() 125 void RefBlock::Set(uint8_t index, const ObjectHeader *object) in Set()
|
/ark/runtime_core/runtime/tooling/ |
D | pt_reference_private.h | 22 class ObjectHeader; variable 29 PtLocalReference *PtCreateLocalReference(ObjectHeader *objectHeader); 32 ObjectHeader *PtGetObjectHeaderByReference(const PtReference *ref); 34 PtGlobalReference *PtCreateGlobalReference(const ObjectHeader *objectHeader);
|