Revision: 4344
Author: [email protected]
Date: Tue Apr  6 03:40:25 2010
Log: JS implementation of isFinite.
Review URL: http://codereview.chromium.org/1608003
http://code.google.com/p/v8/source/detail?r=4344

Modified:
 /branches/bleeding_edge/src/runtime.cc
 /branches/bleeding_edge/src/runtime.h
 /branches/bleeding_edge/src/v8natives.js

=======================================
--- /branches/bleeding_edge/src/runtime.cc      Mon Apr  5 01:00:28 2010
+++ /branches/bleeding_edge/src/runtime.cc      Tue Apr  6 03:40:25 2010
@@ -7098,21 +7098,6 @@
   CONVERT_DOUBLE_CHECKED(x, args[0]);
   return Heap::NumberFromDouble(OS::DaylightSavingsOffset(x));
 }
-
-
-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) {
=======================================
--- /branches/bleeding_edge/src/runtime.h       Fri Mar 26 07:19:47 2010
+++ /branches/bleeding_edge/src/runtime.h       Tue Apr  6 03:40:25 2010
@@ -210,7 +210,6 @@
   F(DateYMDFromTime, 2, 1) \
   \
   /* Numbers */ \
-  F(NumberIsFinite, 1, 1) \
   \
   /* Globals */ \
   F(CompileString, 2, 1) \
=======================================
--- /branches/bleeding_edge/src/v8natives.js    Tue Mar 30 00:15:23 2010
+++ /branches/bleeding_edge/src/v8natives.js    Tue Apr  6 03:40:25 2010
@@ -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;
 }


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

To unsubscribe, reply using "remove me" as the subject.

Reply via email to