diff options
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; } } |