Lines Matching refs:ref

499       mirror::Object* ref = *root;  in VisitRoots()  local
500 if (ref != nullptr) { in VisitRoots()
501 mirror::Object* to_ref = concurrent_copying_->Mark(self, ref); in VisitRoots()
502 if (to_ref != ref) { in VisitRoots()
517 mirror::Object* ref = root->AsMirrorPtr(); in VisitRoots() local
518 mirror::Object* to_ref = concurrent_copying_->Mark(self, ref); in VisitRoots()
519 if (to_ref != ref) { in VisitRoots()
612 void operator()(ObjPtr<mirror::Class> klass, ObjPtr<mirror::Reference> ref) const in operator ()()
615 CheckReference(ref->GetReferent<kWithoutReadBarrier>(), in operator ()()
616 ref, in operator ()()
637 void CheckReference(ObjPtr<mirror::Object> ref, in CheckReference() argument
641 if (ref != nullptr) { in CheckReference()
642 if (!collector_->immune_spaces_.ContainsObject(ref.Ptr())) { in CheckReference()
646 CHECK(large_object_space->Contains(ref.Ptr()) && in CheckReference()
647 large_object_space->IsZygoteLargeObject(Thread::Current(), ref.Ptr())) in CheckReference()
648 << "Non gray object references non immune, non zygote large object "<< ref << " " in CheckReference()
649 << mirror::Object::PrettyTypeOf(ref) << " in holder " << holder << " " in CheckReference()
654 ref->GetClass<kVerifyNone, kWithoutReadBarrier>())); in CheckReference()
696 ObjPtr<mirror::Reference> ref) const in operator ()()
699 this->operator()(ref, mirror::Reference::ReferentOffset(), false); in operator ()()
714 void CheckReference(mirror::Object* ref, int32_t offset = -1) const in CheckReference() argument
716 if (ref != nullptr && cc_->region_space_->IsInNewlyAllocatedRegion(ref)) { in CheckReference()
719 << ref->PrettyTypeOf() << "(" << ref << ") in newly allocated region at offset=" << offset; in CheckReference()
723 LOG(FATAL_WITHOUT_ABORT) << cc_->DumpReferenceInfo(ref, "ref", kIndent); in CheckReference()
944 mirror::Object* ref = *root; in VisitRoots() local
945 if (ref != nullptr && !collector_->TestAndSetMarkBitForRef<kAtomicTestAndSet>(ref)) { in VisitRoots()
946 collector_->PushOntoMarkStack(self_, ref); in VisitRoots()
958 mirror::Object* ref = root->AsMirrorPtr(); in VisitRoots() local
959 if (!collector_->TestAndSetMarkBitForRef<kAtomicTestAndSet>(ref)) { in VisitRoots()
960 collector_->PushOntoMarkStack(self_, ref); in VisitRoots()
1076 mirror::Object* ref = in operator ()() local
1079 if (UNLIKELY(ref == nullptr && offset == mirror::Object::ClassOffset())) { in operator ()()
1087 ref = obj->GetClass<kVerifyNone, kWithoutReadBarrier>(); in operator ()()
1088 if (ref != nullptr) { in operator ()()
1092 << ref << " (" << mirror::Object::PrettyTypeOf(ref) << ")"; in operator ()()
1097 if (UNLIKELY(ref == nullptr)) { in operator ()()
1101 collector_->heap_->GetVerification()->LogHeapCorruption(obj, offset, ref, /* fatal */ true); in operator ()()
1104 CheckReference(ref); in operator ()()
1107 void operator()(ObjPtr<mirror::Class> klass, ObjPtr<mirror::Reference> ref) const in operator ()()
1117 && ref->AsReference()->GetReferent<kWithoutReadBarrier>() != nullptr) { in operator ()()
1141 void CheckReference(mirror::Object* ref) const in CheckReference()
1143 if (ref == nullptr) { in CheckReference()
1147 if (!collector_->TestAndSetMarkBitForRef(ref)) { in CheckReference()
1148 collector_->PushOntoLocalMarkStack(ref); in CheckReference()
1151 size_t ref_region_idx = collector_->RegionSpace()->RegionIdxForRef(ref); in CheckReference()
1166 void ConcurrentCopying::AddLiveBytesAndScanRef(mirror::Object* ref) { in AddLiveBytesAndScanRef() argument
1167 DCHECK(ref != nullptr); in AddLiveBytesAndScanRef()
1168 DCHECK(!immune_spaces_.ContainsObject(ref)); in AddLiveBytesAndScanRef()
1169 DCHECK(TestMarkBitmapForRef(ref)); in AddLiveBytesAndScanRef()
1171 if (LIKELY(region_space_->HasAddress(ref))) { in AddLiveBytesAndScanRef()
1172 obj_region_idx = region_space_->RegionIdxForRefUnchecked(ref); in AddLiveBytesAndScanRef()
1177 size_t obj_size = ref->SizeOf<kDefaultVerifyFlags>(); in AddLiveBytesAndScanRef()
1179 region_space_->AddLiveBytes(ref, alloc_size); in AddLiveBytesAndScanRef()
1184 ref->VisitReferences</*kVisitNativeRoots=*/ true, kDefaultVerifyFlags, kWithoutReadBarrier>( in AddLiveBytesAndScanRef()
1195 DCHECK(heap_->non_moving_space_->HasAddress(ref)); in AddLiveBytesAndScanRef()
1196 non_moving_space_inter_region_bitmap_.Set(ref); in AddLiveBytesAndScanRef()
1198 region_space_inter_region_bitmap_.Set(ref); in AddLiveBytesAndScanRef()
1204 bool ConcurrentCopying::TestAndSetMarkBitForRef(mirror::Object* ref) { in TestAndSetMarkBitForRef() argument
1207 if (LIKELY(region_space_->HasAddress(ref))) { in TestAndSetMarkBitForRef()
1209 } else if (heap_->GetNonMovingSpace()->HasAddress(ref)) { in TestAndSetMarkBitForRef()
1211 } else if (immune_spaces_.ContainsObject(ref)) { in TestAndSetMarkBitForRef()
1213 DCHECK(heap_mark_bitmap_->GetContinuousSpaceBitmap(ref)->Test(ref)); in TestAndSetMarkBitForRef()
1218 && (!IsAligned<kPageSize>(ref) || heap_->GetLargeObjectsSpace() == nullptr)) { in TestAndSetMarkBitForRef()
1223 ref, in TestAndSetMarkBitForRef()
1229 return (bitmap != nullptr) ? bitmap->AtomicTestAndSet(ref) : los_bitmap->AtomicTestAndSet(ref); in TestAndSetMarkBitForRef()
1231 return (bitmap != nullptr) ? bitmap->Set(ref) : los_bitmap->Set(ref); in TestAndSetMarkBitForRef()
1235 bool ConcurrentCopying::TestMarkBitmapForRef(mirror::Object* ref) { in TestMarkBitmapForRef() argument
1236 if (LIKELY(region_space_->HasAddress(ref))) { in TestMarkBitmapForRef()
1237 return region_space_bitmap_->Test(ref); in TestMarkBitmapForRef()
1238 } else if (heap_->GetNonMovingSpace()->HasAddress(ref)) { in TestMarkBitmapForRef()
1239 return heap_->GetNonMovingSpace()->GetMarkBitmap()->Test(ref); in TestMarkBitmapForRef()
1240 } else if (immune_spaces_.ContainsObject(ref)) { in TestMarkBitmapForRef()
1242 DCHECK(heap_mark_bitmap_->GetContinuousSpaceBitmap(ref)->Test(ref)); in TestMarkBitmapForRef()
1247 && (!IsAligned<kPageSize>(ref) || heap_->GetLargeObjectsSpace() == nullptr)) { in TestMarkBitmapForRef()
1252 ref, in TestMarkBitmapForRef()
1255 return heap_->GetLargeObjectsSpace()->GetMarkBitmap()->Test(ref); in TestMarkBitmapForRef()
1259 void ConcurrentCopying::PushOntoLocalMarkStack(mirror::Object* ref) { in PushOntoLocalMarkStack() argument
1269 gc_mark_stack_->PushBack(ref); in PushOntoLocalMarkStack()
1276 [this] (mirror::Object* ref) in ProcessMarkStackForMarkingAndComputeLiveBytes()
1278 AddLiveBytesAndScanRef(ref); in ProcessMarkStackForMarkingAndComputeLiveBytes()
1287 mirror::Object* ref = gc_mark_stack_->PopBack(); in ProcessMarkStackForMarkingAndComputeLiveBytes() local
1288 AddLiveBytesAndScanRef(ref); in ProcessMarkStackForMarkingAndComputeLiveBytes()
1807 for (auto& ref : temp) { in ExpandGcMarkStack() local
1808 gc_mark_stack_->PushBack(ref.AsMirrorPtr()); in ExpandGcMarkStack()
1894 void operator()(mirror::Object* ref, in operator ()() argument
1898 if (ref == nullptr) { in operator ()()
1902 collector_->AssertToSpaceInvariant(holder, offset, ref); in operator ()()
1904 CHECK_EQ(ref->GetReadBarrierState(), ReadBarrier::NonGrayState()) in operator ()()
1905 << "Ref " << ref << " " << ref->PrettyTypeOf() << " has gray rb_state"; in operator ()()
1928 mirror::Object* ref = in operator ()() local
1931 visitor(ref, offset, obj.Ptr()); in operator ()()
1934 ObjPtr<mirror::Reference> ref) const in operator ()()
1937 this->operator()(ref, mirror::Reference::ReferentOffset(), false); in operator ()()
2023 mirror::Object* ref = in operator ()() local
2025 collector_->AssertToSpaceInvariant(obj.Ptr(), offset, ref); in operator ()()
2027 void operator()(ObjPtr<mirror::Class> klass, ObjPtr<mirror::Reference> ref ATTRIBUTE_UNUSED) const in operator ()()
2041 mirror::Object* ref = root->AsMirrorPtr(); in VisitRoot() local
2042 collector_->AssertToSpaceInvariant(/* obj */ nullptr, MemberOffset(0), ref); in VisitRoot()
2122 [this] (mirror::Object* ref) in ProcessMarkStackOnce()
2124 ProcessMarkStackRef(ref); in ProcessMarkStackOnce()
2157 for (mirror::Object* ref : refs) { in ProcessMarkStackOnce()
2158 ProcessMarkStackRef(ref); in ProcessMarkStackOnce()
2412 [this] (mirror::Object* ref) in SwitchToSharedMarkStackMode()
2414 ProcessMarkStackRef(ref); in SwitchToSharedMarkStackMode()
2815 std::string ConcurrentCopying::DumpReferenceInfo(mirror::Object* ref, in DumpReferenceInfo() argument
2819 oss << indent << heap_->GetVerification()->DumpObjectInfo(ref, ref_name) << '\n'; in DumpReferenceInfo()
2820 if (ref != nullptr) { in DumpReferenceInfo()
2822 oss << indent << ref_name << "->GetMarkBit()=" << ref->GetMarkBit() << '\n'; in DumpReferenceInfo()
2823 oss << indent << ref_name << "->GetReadBarrierState()=" << ref->GetReadBarrierState() << '\n'; in DumpReferenceInfo()
2826 if (region_space_->HasAddress(ref)) { in DumpReferenceInfo()
2828 region_space_->DumpRegionForObject(oss, ref); in DumpReferenceInfo()
2831 << std::boolalpha << region_space_bitmap_->Test(ref) << std::noboolalpha; in DumpReferenceInfo()
2839 mirror::Object* ref) { in DumpHeapReference() argument
2842 oss << kIndent << "Invalid reference: ref=" << ref in DumpHeapReference()
2847 oss << DumpReferenceInfo(ref, "ref", kIndent); in DumpHeapReference()
2853 mirror::Object* ref) { in AssertToSpaceInvariant() argument
2856 if (ref == nullptr) { in AssertToSpaceInvariant()
2859 } else if (region_space_->HasAddress(ref)) { in AssertToSpaceInvariant()
2862 space::RegionSpace::RegionType type = region_space_->GetRegionTypeUnsafe(ref); in AssertToSpaceInvariant()
2867 if (!IsMarkedInUnevacFromSpace(ref)) { in AssertToSpaceInvariant()
2871 LOG(FATAL_WITHOUT_ABORT) << DumpHeapReference(obj, offset, ref); in AssertToSpaceInvariant()
2874 CHECK(IsMarkedInUnevacFromSpace(ref)) << ref; in AssertToSpaceInvariant()
2884 LOG(FATAL_WITHOUT_ABORT) << DumpHeapReference(obj, offset, ref); in AssertToSpaceInvariant()
2909 ref->GetLockWord(false).Dump(LOG_STREAM(FATAL_WITHOUT_ABORT)); in AssertToSpaceInvariant()
2914 LOG(FATAL) << "Invalid reference " << ref in AssertToSpaceInvariant()
2919 AssertToSpaceInvariantInNonMovingSpace(obj, ref); in AssertToSpaceInvariant()
2949 std::string ConcurrentCopying::DumpGcRoot(mirror::Object* ref) { in DumpGcRoot() argument
2952 oss << kIndent << "Invalid GC root: ref=" << ref << '\n'; in DumpGcRoot()
2954 oss << DumpReferenceInfo(ref, "ref", kIndent); in DumpGcRoot()
2959 mirror::Object* ref) { in AssertToSpaceInvariant() argument
2962 if (ref == nullptr) { in AssertToSpaceInvariant()
2965 } else if (region_space_->HasAddress(ref)) { in AssertToSpaceInvariant()
2968 space::RegionSpace::RegionType type = region_space_->GetRegionTypeUnsafe(ref); in AssertToSpaceInvariant()
2973 if (!IsMarkedInUnevacFromSpace(ref)) { in AssertToSpaceInvariant()
2977 LOG(FATAL_WITHOUT_ABORT) << DumpGcRoot(ref); in AssertToSpaceInvariant()
2979 CHECK(IsMarkedInUnevacFromSpace(ref)) << ref; in AssertToSpaceInvariant()
2989 LOG(FATAL_WITHOUT_ABORT) << DumpGcRoot(ref); in AssertToSpaceInvariant()
3005 ref->GetLockWord(false).Dump(LOG_STREAM(FATAL_WITHOUT_ABORT)); in AssertToSpaceInvariant()
3010 LOG(FATAL) << "Invalid reference " << ref; in AssertToSpaceInvariant()
3014 AssertToSpaceInvariantInNonMovingSpace(/* obj= */ nullptr, ref); in AssertToSpaceInvariant()
3094 mirror::Object* ref) { in AssertToSpaceInvariantInNonMovingSpace() argument
3095 CHECK(ref != nullptr); in AssertToSpaceInvariantInNonMovingSpace()
3096 CHECK(!region_space_->HasAddress(ref)) << "obj=" << obj << " ref=" << ref; in AssertToSpaceInvariantInNonMovingSpace()
3098 if (immune_spaces_.ContainsObject(ref)) { in AssertToSpaceInvariantInNonMovingSpace()
3106 CHECK(updated_all_immune_objects || ref->GetReadBarrierState() == ReadBarrier::GrayState()) in AssertToSpaceInvariantInNonMovingSpace()
3109 << " ref=" << ref << " ref rb_state=" << ref->GetReadBarrierState() in AssertToSpaceInvariantInNonMovingSpace()
3117 CHECK(IsMarkedInNonMovingSpace(ref)) in AssertToSpaceInvariantInNonMovingSpace()
3120 << " ref=" << ref in AssertToSpaceInvariantInNonMovingSpace()
3121 << " rb_state=" << ref->GetReadBarrierState() in AssertToSpaceInvariantInNonMovingSpace()
3146 void operator()(ObjPtr<mirror::Class> klass, ObjPtr<mirror::Reference> ref) const in operator ()()
3149 collector_->DelayReferenceReferent(klass, ref); in operator ()()
3202 mirror::Object* ref = obj->GetFieldObject< in Process() local
3206 ref, in Process()
3209 if (to_ref == ref) { in Process()
3213 mirror::Object* expected_ref = ref; in Process()
3236 mirror::Object* ref = *root; in VisitRoots() local
3237 mirror::Object* to_ref = Mark(self, ref); in VisitRoots()
3238 if (to_ref == ref) { in VisitRoots()
3242 mirror::Object* expected_ref = ref; in VisitRoots()
3257 mirror::Object* const ref = root->AsMirrorPtr(); in MarkRoot() local
3258 mirror::Object* to_ref = Mark<kGrayImmuneObject>(self, ref); in MarkRoot()
3259 if (to_ref != ref) { in MarkRoot()
3261 auto expected_ref = mirror::CompressedReference<mirror::Object>::FromMirrorPtr(ref); in MarkRoot()
3265 if (ref != addr->load(std::memory_order_relaxed).AsMirrorPtr()) { in MarkRoot()
3637 bool ConcurrentCopying::IsOnAllocStack(mirror::Object* ref) { in IsOnAllocStack() argument
3641 return alloc_stack->Contains(ref); in IsOnAllocStack()
3645 mirror::Object* ref, in MarkNonMoving() argument
3649 DCHECK(!region_space_->HasAddress(ref)) << ref; in MarkNonMoving()
3650 DCHECK(!immune_spaces_.ContainsObject(ref)); in MarkNonMoving()
3654 const bool is_los = !mark_bitmap->HasAddress(ref); in MarkNonMoving()
3656 if (!IsAligned<kPageSize>(ref)) { in MarkNonMoving()
3662 heap_->GetVerification()->LogHeapCorruption(holder, offset, ref, /* fatal= */ true); in MarkNonMoving()
3665 << "ref=" << ref in MarkNonMoving()
3668 DCHECK(los_bitmap->HasAddress(ref)); in MarkNonMoving()
3683 if (!IsOnAllocStack(ref) && in MarkNonMoving()
3684 ref->AtomicSetReadBarrierState(ReadBarrier::NonGrayState(), ReadBarrier::GrayState())) { in MarkNonMoving()
3689 PushOntoMarkStack(self, ref); in MarkNonMoving()
3691 return ref; in MarkNonMoving()
3694 if (!is_los && mark_bitmap->Test(ref)) { in MarkNonMoving()
3696 } else if (is_los && los_bitmap->Test(ref)) { in MarkNonMoving()
3698 } else if (IsOnAllocStack(ref)) { in MarkNonMoving()
3702 DCHECK(!mark_bitmap->Test(ref)); in MarkNonMoving()
3704 DCHECK(!los_bitmap->Test(ref)); in MarkNonMoving()
3707 DCHECK_EQ(ref->GetReadBarrierState(), ReadBarrier::NonGrayState()); in MarkNonMoving()
3714 success = ref->AtomicSetReadBarrierState(ReadBarrier::NonGrayState(), in MarkNonMoving()
3718 !los_bitmap->AtomicTestAndSet(ref) : in MarkNonMoving()
3719 !mark_bitmap->AtomicTestAndSet(ref); in MarkNonMoving()
3723 DCHECK_EQ(ref->GetReadBarrierState(), ReadBarrier::GrayState()); in MarkNonMoving()
3725 PushOntoMarkStack(self, ref); in MarkNonMoving()
3728 return ref; in MarkNonMoving()