Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1788)

Unified Diff: src/v8.cc

Issue 9617011: MIPS: avoid alignment issues in FillHeapNumberWithRandom. (Closed)
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/v8.cc
diff --git a/src/v8.cc b/src/v8.cc
index 003c75ce0b36b7567113cb0b3c1c191b3c36c24b..76546bab8874102a03fb17b536992b88e0e58e67 100644
--- a/src/v8.cc
+++ b/src/v8.cc
@@ -224,10 +224,19 @@ typedef union {
Object* V8::FillHeapNumberWithRandom(Object* heap_number,
Context* context) {
uint64_t random_bits = Random(context);
+#ifdef V8_HOST_ARCH_MIPS
Yang 2012/03/06 17:38:38 We have a flag called V8_TARGET_CAN_READ_UNALIGNED
Erik Corry 2012/03/07 08:25:53 I agree with this.
+ // Copy the value to a local variable to avoid alignment issues.
+ double_int_union num;
+ double_int_union* r = #
+ memcpy(r, heap_number + HeapNumber::kValueOffset - kHeapObjectTag,
+ sizeof(num));
+#else
// Make a double* from address (heap_number + sizeof(double)).
double_int_union* r = reinterpret_cast<double_int_union*>(
reinterpret_cast<char*>(heap_number) +
HeapNumber::kValueOffset - kHeapObjectTag);
+#endif
+
// Convert 32 random bits to 0.(32 random bits) in a double
// by computing:
// ( 1.(20 0s)(32 random bits) x 2^20 ) - (1.0 x 2^20)).
@@ -236,6 +245,11 @@ Object* V8::FillHeapNumberWithRandom(Object* heap_number,
r->uint64_t_value |= random_bits;
r->double_value -= binary_million;
+#ifdef V8_HOST_ARCH_MIPS
+ memcpy(heap_number + HeapNumber::kValueOffset - kHeapObjectTag, r,
+ sizeof(num));
+#endif
+
return heap_number;
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698