[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)