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.