Lines Matching full:mirror
44 #include "mirror/art_field-inl.h"
45 #include "mirror/class-inl.h"
46 #include "mirror/object.h"
47 #include "mirror/object-inl.h"
48 #include "mirror/object_array-inl.h"
505 space::ContinuousSpace* Heap::FindContinuousSpaceFromObject(const mirror::Object* obj,
518 space::DiscontinuousSpace* Heap::FindDiscontinuousSpaceFromObject(const mirror::Object* obj,
531 space::Space* Heap::FindSpaceFromObject(const mirror::Object* obj, bool fail_ok) const {
557 mirror::Object* Heap::AllocObject(Thread* self, mirror::Class* c, size_t byte_count) {
558 DCHECK(c == NULL || (c->IsClassClass() && byte_count >= sizeof(mirror::Class)) ||
561 DCHECK_GE(byte_count, sizeof(mirror::Object));
563 mirror::Object* obj = NULL;
601 SirtRef<mirror::Object> ref(self, obj);
634 bool Heap::IsHeapAddress(const mirror::Object* obj) {
646 bool Heap::IsLiveObjectLocked(const mirror::Object* obj, bool search_allocation_stack,
674 if (allocation_stack_->ContainsSorted(const_cast<mirror::Object*>(obj))) {
677 } else if (allocation_stack_->Contains(const_cast<mirror::Object*>(obj))) {
684 if (live_stack_->ContainsSorted(const_cast<mirror::Object*>(obj))) {
687 } else if (live_stack_->Contains(const_cast<mirror::Object*>(obj))) {
707 void Heap::VerifyObjectImpl(const mirror::Object* obj) {
728 void Heap::VerifyObjectBody(const mirror::Object* obj) {
735 mirror::Object::ClassOffset().Int32Value();
736 const mirror::Class* c = *reinterpret_cast<mirror::Class* const *>(raw_addr);
745 raw_addr = reinterpret_cast<const byte*>(c) + mirror::Object::ClassOffset().Int32Value();
746 const mirror::Class* c_c = *reinterpret_cast<mirror::Class* const *>(raw_addr);
747 raw_addr = reinterpret_cast<const byte*>(c_c) + mirror::Object::ClassOffset().Int32Value();
748 const mirror::Class* c_c_c = *reinterpret_cast<mirror::Class* const *>(raw_addr);
764 void Heap::VerificationCallback(mirror::Object* obj, void* arg) {
774 inline void Heap::RecordAllocation(size_t size, mirror::Object* obj) {
830 inline mirror::Object* Heap::TryToAllocate(Thread* self, space::AllocSpace* space, size_t alloc_size,
839 inline mirror::Object* Heap::TryToAllocate(Thread* self, space::DlMallocSpace* space, size_t alloc_size,
852 inline mirror::Object* Heap::Allocate(Thread* self, T* space, size_t alloc_size,
859 mirror::Object* ptr = TryToAllocate(self, space, alloc_size, false, bytes_allocated);
866 mirror::Object* Heap::AllocateInternalWithGc(Thread* self, space::AllocSpace* space,
868 mirror::Object* ptr;
996 InstanceCounter(const std::vector<mirror::Class*>& classes, bool use_is_assignable_from, uint64_t* counts)
1001 void operator()(const mirror::Object* o) const SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
1003 const mirror::Class* instance_class = o->GetClass();
1017 const std::vector<mirror::Class*>& classes_;
1024 void Heap::CountInstances(const std::vector<mirror::Class*>& classes, bool use_is_assignable_from,
1040 InstanceCollector(mirror::Class* c, int32_t max_count, std::vector<mirror::Object*>& instances)
1045 void operator()(const mirror::Object* o) const SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
1046 const mirror::Class* instance_class = o->GetClass();
1049 instances_.push_back(const_cast<mirror::Object*>(o));
1055 mirror::Class* class_;
1057 std::vector<mirror::Object*>& instances_;
1062 void Heap::GetInstances(mirror::Class* c, int32_t max_count,
1063 std::vector<mirror::Object*>& instances) {
1078 ReferringObjectsFinder(mirror::Object* object, int32_t max_count,
1079 std::vector<mirror::Object*>& referring_objects)
1087 void operator()(const mirror::Object* o) const NO_THREAD_SAFETY_ANALYSIS {
1092 void operator()(const mirror::Object* referrer, const mirror::Object* object,
1095 referring_objects_.push_back(const_cast<mirror::Object*>(referrer));
1100 mirror::Object* object_;
1102 std::vector<mirror::Object*>& referring_objects_;
1107 void Heap::GetReferringObjects(mirror::Object* o, int32_t max_count,
1108 std::vector<mirror::Object*>& referring_objects) {
1174 mirror::Object** limit = stack->End();
1175 for (mirror::Object** it = stack->Begin(); it != limit; ++it) {
1176 const mirror::Object* obj = *it;
1343 static void RootMatchesObjectVisitor(const mirror::Object* root, void* arg) {
1344 mirror::Object* obj = reinterpret_cast<mirror::Object*>(arg);
1352 void operator()(const mirror::Object* obj) const {
1370 void operator()(const mirror::Object* obj, const mirror::Object* ref,
1398 mirror::Class* ref_class = space->FindRecentFreedObject(ref);
1427 if (alloc_stack->Contains(const_cast<mirror::Object*>(obj))) {
1430 if (live_stack->Contains(const_cast<mirror::Object*>(obj))) {
1433 if (alloc_stack->Contains(const_cast<mirror::Object*>(ref))) {
1436 if (live_stack->Contains(const_cast<mirror::Object*>(ref))) {
1458 bool IsLive(const mirror::Object* obj) const NO_THREAD_SAFETY_ANALYSIS {
1462 static void VerifyRoots(const mirror::Object* root, void* arg) {
1477 void operator()(const mirror::Object* obj) const
1510 for (mirror::Object** it = allocation_stack_->Begin(); it != allocation_stack_->End(); ++it) {
1535 void operator()(const mirror::Object* obj, const mirror::Object* ref, const MemberOffset& offset,
1550 if (live_stack->ContainsSorted(const_cast<mirror::Object*>(ref))) {
1551 if (live_stack->ContainsSorted(const_cast<mirror::Object*>(obj))) {
1562 const mirror::Class* klass = is_static ? obj->AsClass() : obj->GetClass();
1564 const mirror::ObjectArray<mirror::ArtField>* fields = is_static ? klass->GetSFields()
1568 const mirror::ArtField* cur = fields->Get(i);
1576 const mirror::ObjectArray<mirror::Object>* object_array =
1577 obj->AsObjectArray<mirror::Object>();
1602 void operator()(const mirror::Object* obj) const
1626 for (mirror::Object** it = live_stack_->Begin(); it != live_stack_->End(); ++it) {
1878 mirror::Object* Heap::GetReferenceReferent(mirror::Object* reference) {
1881 return reference->GetFieldObject<mirror::Object*>(reference_referent_offset_, true);
1884 void Heap::ClearReferenceReferent(mirror::Object* reference) {
1891 bool Heap::IsEnqueuable(const mirror::Object* ref) {
1893 const mirror::Object* queue =
1894 ref->GetFieldObject<mirror::Object*>(reference_queue_offset_, false);
1895 const mirror::Object* queue_next =
1896 ref->GetFieldObject<mirror::Object*>(reference_queueNext_offset_, false);
1900 void Heap::EnqueueReference(mirror::Object* ref, mirror::Object** cleared_reference_list) {
1902 CHECK(ref->GetFieldObject<mirror::Object*>(reference_queue_offset_, false) != NULL);
1903 CHECK(ref->GetFieldObject<mirror::Object*>(reference_queueNext_offset_, false) == NULL);
1907 bool Heap::IsEnqueued(mirror::Object* ref) {
1910 return ref->GetFieldObject<mirror::Object*>(GetReferencePendingNextOffset(), false) != nullptr;
1913 void Heap::EnqueuePendingReference(mirror::Object* ref, mirror::Object** list) {
1921 mirror::Object* head =
1922 (*list)->GetFieldObject<mirror::Object*>(reference_pendingNext_offset_, false);
1928 mirror::Object* Heap::DequeuePendingReference(mirror::Object** list) {
1931 mirror::Object* head = (*list)->GetFieldObject<mirror::Object*>(reference_pendingNext_offset_,
1933 mirror::Object* ref;
1941 mirror::Object* next = head->GetFieldObject<mirror::Object*>(reference_pendingNext_offset_,
1950 void Heap::AddFinalizerReference(Thread* self, mirror::Object* object) {
1959 void Heap::EnqueueClearedReferences(mirror::Object** cleared) {