Reviewers: Christian Plesner Hansen, Description: Explicitly change a floating point division with a constant into a multiplication by its inverse.
In optimized builds GCC does this on its own, but this may be useful when using other compilers. Please review this at http://codereview.chromium.org/11524 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/runtime.cc Index: src/runtime.cc =================================================================== --- src/runtime.cc (revision 784) +++ src/runtime.cc (working copy) @@ -3163,9 +3163,9 @@ // double in the range [0, RAND_MAX + 1) obtained by adding the // high-order bits in the range [0, RAND_MAX] with the low-order // bits in the range [0, 1). - double lo = static_cast<double>(random()) / (RAND_MAX + 1.0); + double lo = static_cast<double>(random()) * (1.0 / (RAND_MAX + 1.0)); double hi = static_cast<double>(random()); - double result = (hi + lo) / (RAND_MAX + 1.0); + double result = (hi + lo) * (1.0 / (RAND_MAX + 1.0)); ASSERT(result >= 0 && result < 1); return Heap::AllocateHeapNumber(result); } --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
