Revision: 9630
Author: [email protected]
Date: Fri Oct 14 04:22:44 2011
Log: Port r9116 to the 3.5 branch.
Review URL: http://codereview.chromium.org/8271028
http://code.google.com/p/v8/source/detail?r=9630
Modified:
/branches/3.5/src/v8natives.js
/branches/3.5/src/version.cc
/branches/3.5/test/mjsunit/parse-int-float.js
=======================================
--- /branches/3.5/src/v8natives.js Mon Aug 29 03:41:00 2011
+++ /branches/3.5/src/v8natives.js Fri Oct 14 04:22:44 2011
@@ -106,13 +106,16 @@
// Truncate number.
return string | 0;
}
+ string = TO_STRING_INLINE(string);
radix = radix | 0;
} else {
+ // The spec says ToString should be evaluated before ToInt32.
+ string = TO_STRING_INLINE(string);
radix = TO_INT32(radix);
if (!(radix == 0 || (2 <= radix && radix <= 36)))
return $NaN;
}
- string = TO_STRING_INLINE(string);
+
if (%_HasCachedArrayIndex(string) &&
(radix == 0 || radix == 10)) {
return %_GetCachedArrayIndex(string);
=======================================
--- /branches/3.5/src/version.cc Fri Oct 14 03:53:23 2011
+++ /branches/3.5/src/version.cc Fri Oct 14 04:22:44 2011
@@ -35,7 +35,7 @@
#define MAJOR_VERSION 3
#define MINOR_VERSION 5
#define BUILD_NUMBER 10
-#define PATCH_LEVEL 19
+#define PATCH_LEVEL 20
// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
#define IS_CANDIDATE_VERSION 0
=======================================
--- /branches/3.5/test/mjsunit/parse-int-float.js Tue Apr 6 06:10:27 2010
+++ /branches/3.5/test/mjsunit/parse-int-float.js Fri Oct 14 04:22:44 2011
@@ -100,4 +100,17 @@
assertEquals(Infinity, parseFloat(1/0), "parseFloat Infinity");
assertEquals(-Infinity, parseFloat(-1/0), "parseFloat -Infinity");
-
+var state;
+var throwingRadix = { valueOf: function() { state = "throwingRadix"; throw
null; } };
+var throwingString = { toString: function() { state = "throwingString";
throw null; } };
+state = null;
+try { parseInt('123', throwingRadix); } catch (e) {}
+assertEquals(state, "throwingRadix");
+
+state = null;
+try { parseInt(throwingString, 10); } catch (e) {}
+assertEquals(state, "throwingString");
+
+state = null;
+try { parseInt(throwingString, throwingRadix); } catch (e) {}
+assertEquals(state, "throwingString");
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev