Reviewers: Søren Gjesse,
Description:
JS implementation of isFinite.
Please review this at http://codereview.chromium.org/1608003
SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
Affected files:
M src/runtime.h
M src/runtime.cc
M src/v8natives.js
Index: src/v8natives.js
===================================================================
--- src/v8natives.js (revision 4336)
+++ src/v8natives.js (working copy)
@@ -82,7 +82,10 @@
// ECMA 262 - 15.1.5
function GlobalIsFinite(number) {
- return %NumberIsFinite(ToNumber(number));
+ if (!IS_NUMBER(number)) number = ToNumber(number);
+
+ // NaN - NaN == NaN, Infinity - Infinity == NaN, -Infinity - -Infinity
== NaN.
+ return %_IsSmi(number) || number - number == 0;
}
Index: src/runtime.cc
===================================================================
--- src/runtime.cc (revision 4336)
+++ src/runtime.cc (working copy)
@@ -7098,21 +7098,6 @@
}
-static Object* Runtime_NumberIsFinite(Arguments args) {
- NoHandleAllocation ha;
- ASSERT(args.length() == 1);
-
- CONVERT_DOUBLE_CHECKED(value, args[0]);
- Object* result;
- if (isnan(value) || (fpclassify(value) == FP_INFINITE)) {
- result = Heap::false_value();
- } else {
- result = Heap::true_value();
- }
- return result;
-}
-
-
static Object* Runtime_GlobalReceiver(Arguments args) {
ASSERT(args.length() == 1);
Object* global = args[0];
Index: src/runtime.h
===================================================================
--- src/runtime.h (revision 4336)
+++ src/runtime.h (working copy)
@@ -210,7 +210,6 @@
F(DateYMDFromTime, 2, 1) \
\
/* Numbers */ \
- F(NumberIsFinite, 1, 1) \
\
/* Globals */ \
F(CompileString, 2, 1) \
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
To unsubscribe, reply using "remove me" as the subject.