Index: src/deoptimizer.h |
diff --git a/src/deoptimizer.h b/src/deoptimizer.h |
index 5d401deedd6c8d9f06c15b7f9b61a3f352680176..602a21a0e20b199e7ca9a229b79c0be5be9c4783 100644 |
--- a/src/deoptimizer.h |
+++ b/src/deoptimizer.h |
@@ -17,19 +17,17 @@ namespace internal { |
static inline double read_double_value(Address p) { |
-#ifdef V8_HOST_CAN_READ_UNALIGNED |
- return Memory::double_at(p); |
-#else // V8_HOST_CAN_READ_UNALIGNED |
// Prevent gcc from using load-double (mips ldc1) on (possibly) |
// non-64-bit aligned address. |
+ // We assume that the address is 32-bit aligned. |
+ DCHECK(IsAligned(reinterpret_cast<intptr_t>(p), kInt32Size)); |
union conversion { |
double d; |
uint32_t u[2]; |
} c; |
- c.u[0] = *reinterpret_cast<uint32_t*>(p); |
- c.u[1] = *reinterpret_cast<uint32_t*>(p + 4); |
+ c.u[0] = Memory::uint32_at(p); |
+ c.u[1] = Memory::uint32_at(p + 4); |
return c.d; |
-#endif // V8_HOST_CAN_READ_UNALIGNED |
} |