summaryrefslogtreecommitdiff
path: root/runtime/mirror/array-inl.h
diff options
context:
space:
mode:
author Sam Saccone <samccone@google.com> 2023-01-29 18:16:24 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2023-01-29 18:16:24 +0000
commit24b3d648ff6c2c200003f55ac63fc910d7bfd40f (patch)
tree1c1324dc63cca9a7b3ea7a0a432535fa25c47d88 /runtime/mirror/array-inl.h
parentdf68c0a6f0d36728fa728049e5bcec20de2d0d5e (diff)
Revert "Write classes in runtime-generated app image."
This reverts commit df68c0a6f0d36728fa728049e5bcec20de2d0d5e. Reason for revert: b/267084527 Change-Id: I2eacf89c23db00c46d56e78009efa11bed31af60
Diffstat (limited to 'runtime/mirror/array-inl.h')
-rw-r--r--runtime/mirror/array-inl.h16
1 files changed, 5 insertions, 11 deletions
diff --git a/runtime/mirror/array-inl.h b/runtime/mirror/array-inl.h
index 2bdf8277cd..a7faa376cd 100644
--- a/runtime/mirror/array-inl.h
+++ b/runtime/mirror/array-inl.h
@@ -240,16 +240,13 @@ inline T PointerArray::GetElementPtrSizeUnchecked(uint32_t idx) {
// C style casts here since we sometimes have T be a pointer, or sometimes an integer
// (for stack traces).
using ConversionType = typename std::conditional_t<std::is_pointer_v<T>, uintptr_t, T>;
- // Note: we cast the array directly when unchecked as this code gets called by
- // runtime_image, which can pass a 64bit pointer and therefore cannot be held
- // by an ObjPtr.
if (kPointerSize == PointerSize::k64) {
uint64_t value =
- static_cast<uint64_t>(reinterpret_cast<LongArray*>(this)->GetWithoutChecks(idx));
+ static_cast<uint64_t>(AsLongArrayUnchecked<kVerifyFlags>()->GetWithoutChecks(idx));
return (T) dchecked_integral_cast<ConversionType>(value);
} else {
uint32_t value =
- static_cast<uint32_t>(reinterpret_cast<IntArray*>(this)->GetWithoutChecks(idx));
+ static_cast<uint32_t>(AsIntArrayUnchecked<kVerifyFlags>()->GetWithoutChecks(idx));
return (T) dchecked_integral_cast<ConversionType>(value);
}
}
@@ -264,15 +261,12 @@ inline T PointerArray::GetElementPtrSize(uint32_t idx, PointerSize ptr_size) {
template<bool kTransactionActive, bool kCheckTransaction, bool kUnchecked>
inline void PointerArray::SetElementPtrSize(uint32_t idx, uint64_t element, PointerSize ptr_size) {
- // Note: we cast the array directly when unchecked as this code gets called by
- // runtime_image, which can pass a 64bit pointer and therefore cannot be held
- // by an ObjPtr.
if (ptr_size == PointerSize::k64) {
- (kUnchecked ? reinterpret_cast<LongArray*>(this) : AsLongArray().Ptr())->
+ (kUnchecked ? ObjPtr<LongArray>::DownCast(ObjPtr<Object>(this)) : AsLongArray())->
SetWithoutChecks<kTransactionActive, kCheckTransaction>(idx, element);
} else {
uint32_t element32 = dchecked_integral_cast<uint32_t>(element);
- (kUnchecked ? reinterpret_cast<IntArray*>(this) : AsIntArray().Ptr())
+ (kUnchecked ? ObjPtr<IntArray>::DownCast(ObjPtr<Object>(this)) : AsIntArray())
->SetWithoutChecks<kTransactionActive, kCheckTransaction>(idx, element32);
}
}
@@ -284,7 +278,7 @@ inline void PointerArray::SetElementPtrSize(uint32_t idx, T* element, PointerSiz
}
template <VerifyObjectFlags kVerifyFlags, typename Visitor>
-inline void PointerArray::Fixup(mirror::PointerArray* dest,
+inline void PointerArray::Fixup(ObjPtr<mirror::PointerArray> dest,
PointerSize pointer_size,
const Visitor& visitor) {
for (size_t i = 0, count = GetLength(); i < count; ++i) {