Index: src/deoptimizer.h |
diff --git a/src/deoptimizer.h b/src/deoptimizer.h |
index 8b4b26397e322f7817b33124d5f7ef06c93fb88e..4becf6e305e1ce29a36eac853688445a169aa21c 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 |
} |