Reviewers: Jakob,

Description:
Increase precision for base conversion for large integers.


[email protected]
BUG=v8:3025
LOG=Y

Please review this at https://codereview.chromium.org/88583002/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+8, -6 lines):
  M src/conversions.cc
  A + test/mjsunit/regress/regress-3025.js


Index: src/conversions.cc
diff --git a/src/conversions.cc b/src/conversions.cc
index 5f1219eea9139cf2aa77c0c8dda95609b6a12481..397f3c57fb8628de2e39b521ff2298dcf977db41 100644
--- a/src/conversions.cc
+++ b/src/conversions.cc
@@ -401,8 +401,9 @@ char* DoubleToRadixCString(double value, int radix) {
   // at least one digit.
   int integer_pos = kBufferSize - 2;
   do {
-    integer_buffer[integer_pos--] =
-        chars[static_cast<int>(fmod(integer_part, radix))];
+    double remainder = fmod(integer_part, radix);
+    integer_buffer[integer_pos--] = chars[static_cast<int>(remainder)];
+    integer_part -= remainder;
     integer_part /= radix;
   } while (integer_part >= 1.0);
   // Sanity check.
Index: test/mjsunit/regress/regress-3025.js
diff --git a/test/mjsunit/regress/regress-2790.js b/test/mjsunit/regress/regress-3025.js
similarity index 92%
copy from test/mjsunit/regress/regress-2790.js
copy to test/mjsunit/regress/regress-3025.js
index 927f2607cc1f16ab56acdb21d1a77fd4dc8dbe58..ccb3830687b9eeff358b0aff5e02e3e89d35b8cf 100644
--- a/test/mjsunit/regress/regress-2790.js
+++ b/test/mjsunit/regress/regress-3025.js
@@ -25,7 +25,8 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

-// Test that we can create arrays of any size.
-for (var i = 1000; i < 1000000; i += 197) {
-  new Array(i);
-}
+var n = 0x8000000000000800;
+assertEquals(n, 9223372036854778000);
+var s = n.toString(5);
+var v = parseInt(s, 5);
+assertEquals(n, v);


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to