summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Victor Chang <vichang@google.com> 2025-01-17 12:30:38 +0000
committer Victor Chang <vichang@google.com> 2025-01-27 01:59:15 -0800
commit00c7f9fbce1a52ca82dc5ef1f32af5e05904326e (patch)
tree1df73504abd9abab1a0cc3960db6cbd5f1fb77b4
parente8ea3a17d66636e6cc6a395b967e22aac8761e67 (diff)
Simplify PrimitiveArray<T>::Memcpy
Test: ART is built successfully. Change-Id: I20dff0cb6c58187444a8ff5afb49eff1e98fc637
-rw-r--r--runtime/mirror/array-inl.h17
1 files changed, 5 insertions, 12 deletions
diff --git a/runtime/mirror/array-inl.h b/runtime/mirror/array-inl.h
index 1898aca12f..8a8d112efd 100644
--- a/runtime/mirror/array-inl.h
+++ b/runtime/mirror/array-inl.h
@@ -209,23 +209,16 @@ inline void PrimitiveArray<T>::Memcpy(int32_t dst_pos,
// Note for non-byte copies we can't rely on standard libc functions like memcpy(3) and memmove(3)
// in our implementation, because they may copy byte-by-byte.
+ static_assert(sizeof(T) == sizeof(uint8_t) || sizeof(T) == sizeof(uint16_t) ||
+ sizeof(T) == sizeof(uint32_t) || sizeof(T) == sizeof(uint64_t));
void* dst_raw = GetRawData(sizeof(T), dst_pos);
const void* src_raw = src->GetRawData(sizeof(T), src_pos);
if (sizeof(T) == sizeof(uint8_t)) {
memcpy(dst_raw, src_raw, count);
- } else if (sizeof(T) == sizeof(uint16_t)) {
- uint16_t* d = reinterpret_cast<uint16_t*>(dst_raw);
- const uint16_t* s = reinterpret_cast<const uint16_t*>(src_raw);
- ArrayForwardCopy<uint16_t>(d, s, count);
- } else if (sizeof(T) == sizeof(uint32_t)) {
- uint32_t* d = reinterpret_cast<uint32_t*>(dst_raw);
- const uint32_t* s = reinterpret_cast<const uint32_t*>(src_raw);
- ArrayForwardCopy<uint32_t>(d, s, count);
} else {
- DCHECK_EQ(sizeof(T), sizeof(uint64_t));
- uint64_t* d = reinterpret_cast<uint64_t*>(dst_raw);
- const uint64_t* s = reinterpret_cast<const uint64_t*>(src_raw);
- ArrayForwardCopy<uint64_t>(d, s, count);
+ T* d = reinterpret_cast<T*>(dst_raw);
+ const T* s = reinterpret_cast<const T*>(src_raw);
+ ArrayForwardCopy<T>(d, s, count);
}
}