diff options
| author | 2022-08-10 18:32:01 +0000 | |
|---|---|---|
| committer | 2022-08-10 18:32:01 +0000 | |
| commit | fc585e2673b2f18b9f91f76153c9eaaa1eb207d1 (patch) | |
| tree | f53d47bb0dfd4adeaabf6ca712fad323472bee0d /runtime/mirror/object_array-inl.h | |
| parent | c9f62e0acd5352e86cf9350112b806e58f26b834 (diff) | |
| parent | 528b169d1351f3606778ba10fe9ae8fcecf7a7c4 (diff) | |
Stop-the-world compaction phase am: 528b169d13
Original change: https://android-review.googlesource.com/c/platform/art/+/1868127
Change-Id: I44bbfbbfe4973f7c64981f4f9a25435a52095c08
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'runtime/mirror/object_array-inl.h')
| -rw-r--r-- | runtime/mirror/object_array-inl.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/runtime/mirror/object_array-inl.h b/runtime/mirror/object_array-inl.h index e4fe03b357..1bd0185743 100644 --- a/runtime/mirror/object_array-inl.h +++ b/runtime/mirror/object_array-inl.h @@ -327,7 +327,20 @@ template<class T> template<typename Visitor> inline void ObjectArray<T>::VisitReferences(const Visitor& visitor) { const size_t length = static_cast<size_t>(GetLength()); for (size_t i = 0; i < length; ++i) { - visitor(this, OffsetOfElement(i), false); + visitor(this, OffsetOfElement(i), /* is_static= */ false); + } +} + +template<class T> template<typename Visitor> +inline void ObjectArray<T>::VisitReferences(const Visitor& visitor, + MemberOffset begin, + MemberOffset end) { + const size_t length = static_cast<size_t>(GetLength()); + begin = std::max(begin, OffsetOfElement(0)); + end = std::min(end, OffsetOfElement(length)); + while (begin < end) { + visitor(this, begin, /* is_static= */ false, /*is_obj_array*/ true); + begin += kHeapReferenceSize; } } |