[vm, arm] Fix unaligned access to external TypedData in natives.
Bug: b/78784236
Change-Id: I8235135e9f438c51d0f7e6297498e5ade2eb9659
Reviewed-on: https://dart-review.googlesource.com/54530
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 6784a13..c23eda4 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -8430,10 +8430,10 @@
#define TYPED_GETTER_SETTER(name, type) \
type Get##name(intptr_t byte_offset) const { \
- return *reinterpret_cast<type*>(DataAddr(byte_offset)); \
+ return ReadUnaligned(reinterpret_cast<type*>(DataAddr(byte_offset))); \
} \
void Set##name(intptr_t byte_offset, type value) const { \
- *reinterpret_cast<type*>(DataAddr(byte_offset)) = value; \
+ StoreUnaligned(reinterpret_cast<type*>(DataAddr(byte_offset)), value); \
}
TYPED_GETTER_SETTER(Int8, int8_t)
TYPED_GETTER_SETTER(Uint8, uint8_t)