Simplify V8::FillHeapNumberWithRandom.
BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/9592047 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10975 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
e6576f0938
commit
9f1846173c
14
src/v8.cc
14
src/v8.cc
@ -223,19 +223,17 @@ typedef union {
|
|||||||
|
|
||||||
Object* V8::FillHeapNumberWithRandom(Object* heap_number,
|
Object* V8::FillHeapNumberWithRandom(Object* heap_number,
|
||||||
Context* context) {
|
Context* context) {
|
||||||
|
double_int_union r;
|
||||||
uint64_t random_bits = Random(context);
|
uint64_t random_bits = Random(context);
|
||||||
// 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);
|
|
||||||
// Convert 32 random bits to 0.(32 random bits) in a double
|
// Convert 32 random bits to 0.(32 random bits) in a double
|
||||||
// by computing:
|
// by computing:
|
||||||
// ( 1.(20 0s)(32 random bits) x 2^20 ) - (1.0 x 2^20)).
|
// ( 1.(20 0s)(32 random bits) x 2^20 ) - (1.0 x 2^20)).
|
||||||
const double binary_million = 1048576.0;
|
static const double binary_million = 1048576.0;
|
||||||
r->double_value = binary_million;
|
r.double_value = binary_million;
|
||||||
r->uint64_t_value |= random_bits;
|
r.uint64_t_value |= random_bits;
|
||||||
r->double_value -= binary_million;
|
r.double_value -= binary_million;
|
||||||
|
|
||||||
|
HeapNumber::cast(heap_number)->set_value(r.double_value);
|
||||||
return heap_number;
|
return heap_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user