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
-~----------~----~----~----~------~----~------~--~---

Reply via email to