Title: [88605] trunk/Source/_javascript_Core
Revision
88605
Author
[email protected]
Date
2011-06-11 13:16:46 -0700 (Sat, 11 Jun 2011)

Log Message

https://bugs.webkit.org/show_bug.cgi?id=16777

Reviewed by Darin Adler.

Remove #define NaN per Darin's comments.

* runtime/JSGlobalObjectFunctions.cpp:
(JSC::parseIntOverflow):
(JSC::parseInt):
(JSC::jsStrDecimalLiteral):
(JSC::jsToNumber):
(JSC::parseFloat):
* wtf/DateMath.cpp:
(WTF::equivalentYearForDST):
(WTF::parseES5DateFromNullTerminatedCharacters):
(WTF::parseDateFromNullTerminatedCharacters):
(WTF::timeClip):
(JSC::parseDateFromNullTerminatedCharacters):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (88604 => 88605)


--- trunk/Source/_javascript_Core/ChangeLog	2011-06-11 20:07:48 UTC (rev 88604)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-06-11 20:16:46 UTC (rev 88605)
@@ -1,5 +1,26 @@
 2011-06-11  Gavin Barraclough  <[email protected]>
 
+        Reviewed by Darin Adler.
+
+        https://bugs.webkit.org/show_bug.cgi?id=16777
+
+        Remove #define NaN per Darin's comments.
+
+        * runtime/JSGlobalObjectFunctions.cpp:
+        (JSC::parseIntOverflow):
+        (JSC::parseInt):
+        (JSC::jsStrDecimalLiteral):
+        (JSC::jsToNumber):
+        (JSC::parseFloat):
+        * wtf/DateMath.cpp:
+        (WTF::equivalentYearForDST):
+        (WTF::parseES5DateFromNullTerminatedCharacters):
+        (WTF::parseDateFromNullTerminatedCharacters):
+        (WTF::timeClip):
+        (JSC::parseDateFromNullTerminatedCharacters):
+
+2011-06-11  Gavin Barraclough  <[email protected]>
+
         Rubber stamped by Geoff Garen.
 
         https://bugs.webkit.org/show_bug.cgi?id=62503

Modified: trunk/Source/_javascript_Core/runtime/JSGlobalObjectFunctions.cpp (88604 => 88605)


--- trunk/Source/_javascript_Core/runtime/JSGlobalObjectFunctions.cpp	2011-06-11 20:07:48 UTC (rev 88604)
+++ trunk/Source/_javascript_Core/runtime/JSGlobalObjectFunctions.cpp	2011-06-11 20:16:46 UTC (rev 88605)
@@ -49,9 +49,6 @@
 
 namespace JSC {
 
-#define NaN std::numeric_limits<double>::quiet_NaN()
-#define Inf std::numeric_limits<double>::infinity()
-
 static JSValue encode(ExecState* exec, const char* doNotEscape)
 {
     UString str = exec->argument(0).toString(exec);
@@ -182,9 +179,9 @@
     double radixMultiplier = 1.0;
 
     for (const char* p = s + length - 1; p >= s; p--) {
-        if (radixMultiplier == Inf) {
+        if (radixMultiplier == std::numeric_limits<double>::infinity()) {
             if (*p != '0') {
-                number = Inf;
+                number = std::numeric_limits<double>::infinity();
                 break;
             }
         } else {
@@ -204,9 +201,9 @@
     double radixMultiplier = 1.0;
 
     for (const UChar* p = s + length - 1; p >= s; p--) {
-        if (radixMultiplier == Inf) {
+        if (radixMultiplier == std::numeric_limits<double>::infinity()) {
             if (*p != '0') {
-                number = Inf;
+                number = std::numeric_limits<double>::infinity();
                 break;
             }
         } else {
@@ -250,7 +247,7 @@
     }
 
     if (radix < 2 || radix > 36)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
 
     int firstDigitPosition = p;
     bool sawDigit = false;
@@ -273,7 +270,7 @@
     }
 
     if (!sawDigit)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
 
     return sign * number;
 }
@@ -341,27 +338,27 @@
     case 'I':
         if (isInfinity(data, end)) {
             data += SizeOfInfinity;
-            return Inf;
+            return std::numeric_limits<double>::infinity();
         }
         break;
 
     case '+':
         if (isInfinity(data + 1, end)) {
             data += SizeOfInfinity + 1;
-            return Inf;
+            return std::numeric_limits<double>::infinity();
         }
         break;
 
     case '-':
         if (isInfinity(data + 1, end)) {
             data += SizeOfInfinity + 1;
-            return -Inf;
+            return -std::numeric_limits<double>::infinity();
         }
         break;
     }
 
     // Not a number.
-    return NaN;
+    return std::numeric_limits<double>::quiet_NaN();
 }
 
 // See ecma-262 9.3.1
@@ -375,7 +372,7 @@
             return c - '0';
         if (isStrWhiteSpace(c))
             return 0;
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     }
 
     const UChar* data = ""
@@ -403,7 +400,7 @@
             break;
     }
     if (data != end)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
 
     return number;
 }
@@ -416,7 +413,7 @@
         UChar c = s.characters()[0];
         if (isASCIIDigit(c))
             return c - '0';
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     }
 
     const UChar* data = ""
@@ -430,7 +427,7 @@
 
     // Empty string.
     if (data == end)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
 
     return jsStrDecimalLiteral(data, end);
 }

Modified: trunk/Source/_javascript_Core/wtf/DateMath.cpp (88604 => 88605)


--- trunk/Source/_javascript_Core/wtf/DateMath.cpp	2011-06-11 20:07:48 UTC (rev 88604)
+++ trunk/Source/_javascript_Core/wtf/DateMath.cpp	2011-06-11 20:16:46 UTC (rev 88605)
@@ -113,8 +113,6 @@
 #include "CallFrame.h"
 #endif
 
-#define NaN std::numeric_limits<double>::quiet_NaN()
-
 using namespace WTF;
 
 namespace WTF {
@@ -389,7 +387,7 @@
     int product = (quotient) * 28;
 
     year += product;
-    ASSERT((year >= minYear && year <= maxYear) || (product - year == static_cast<int>(NaN)));
+    ASSERT((year >= minYear && year <= maxYear) || (product - year == static_cast<int>(std::numeric_limits<double>::quiet_NaN())));
     return year;
 }
 
@@ -589,54 +587,54 @@
     // it accepts any integer value. Consider this an implementation fallback.
     long year;
     if (!parseLong(currentPosition, &postParsePosition, 10, &year))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (*postParsePosition != '-')
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     currentPosition = postParsePosition + 1;
     
     long month;
     if (!isASCIIDigit(*currentPosition))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (!parseLong(currentPosition, &postParsePosition, 10, &month))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (*postParsePosition != '-' || (postParsePosition - currentPosition) != 2)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     currentPosition = postParsePosition + 1;
     
     long day;
     if (!isASCIIDigit(*currentPosition))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (!parseLong(currentPosition, &postParsePosition, 10, &day))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (*postParsePosition != 'T' || (postParsePosition - currentPosition) != 2)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     currentPosition = postParsePosition + 1;
     
     long hours;
     if (!isASCIIDigit(*currentPosition))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (!parseLong(currentPosition, &postParsePosition, 10, &hours))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (*postParsePosition != ':' || (postParsePosition - currentPosition) != 2)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     currentPosition = postParsePosition + 1;
     
     long minutes;
     if (!isASCIIDigit(*currentPosition))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (!parseLong(currentPosition, &postParsePosition, 10, &minutes))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (*postParsePosition != ':' || (postParsePosition - currentPosition) != 2)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     currentPosition = postParsePosition + 1;
     
     long intSeconds;
     if (!isASCIIDigit(*currentPosition))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (!parseLong(currentPosition, &postParsePosition, 10, &intSeconds))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if ((postParsePosition - currentPosition) != 2)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     
     double seconds = intSeconds;
     if (*postParsePosition == '.') {
@@ -646,12 +644,12 @@
         // a reasonable interpretation guided by the given examples and RFC 3339 says "no".
         // We check the next character to avoid reading +/- timezone hours after an invalid decimal.
         if (!isASCIIDigit(*currentPosition))
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         
         // We are more lenient than ES5 by accepting more or less than 3 fraction digits.
         long fracSeconds;
         if (!parseLong(currentPosition, &postParsePosition, 10, &fracSeconds))
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         
         long numFracDigits = postParsePosition - currentPosition;
         seconds += fracSeconds * pow(10.0, static_cast<double>(-numFracDigits));
@@ -661,19 +659,19 @@
     // A few of these checks could be done inline above, but since many of them are interrelated
     // we would be sacrificing readability to "optimize" the (presumably less common) failure path.
     if (month < 1 || month > 12)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (day < 1 || day > daysPerMonth[month - 1])
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (month == 2 && day > 28 && !isLeapYear(year))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (hours < 0 || hours > 24)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (hours == 24 && (minutes || seconds))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (minutes < 0 || minutes > 59)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (seconds < 0 || seconds >= 61)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (seconds > 60) {
         // Discard leap seconds by clamping to the end of a minute.
         seconds = 60;
@@ -687,7 +685,7 @@
         else if (*currentPosition == '+')
             tzNegative = false;
         else
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         currentPosition += 1;
         
         long tzHours;
@@ -695,26 +693,26 @@
         long tzMinutes;
         
         if (!isASCIIDigit(*currentPosition))
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         if (!parseLong(currentPosition, &postParsePosition, 10, &tzHours))
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         if (*postParsePosition != ':' || (postParsePosition - currentPosition) != 2)
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         tzHoursAbs = abs(tzHours);
         currentPosition = postParsePosition + 1;
         
         if (!isASCIIDigit(*currentPosition))
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         if (!parseLong(currentPosition, &postParsePosition, 10, &tzMinutes))
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         if ((postParsePosition - currentPosition) != 2)
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         currentPosition = postParsePosition;
         
         if (tzHoursAbs > 24)
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         if (tzMinutes < 0 || tzMinutes > 59)
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         
         timeZoneSeconds = 60 * (tzMinutes + (60 * tzHoursAbs));
         if (tzNegative)
@@ -723,7 +721,7 @@
         currentPosition += 1;
     }
     if (*currentPosition)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     
     double dateSeconds = ymdhmsToSeconds(year, month, day, hours, minutes, seconds) - timeZoneSeconds;
     return dateSeconds * msPerSecond;
@@ -772,52 +770,52 @@
     skipSpacesAndComments(dateString);
 
     if (!*dateString)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
 
     // ' 09-Nov-99 23:12:40 GMT'
     char* newPosStr;
     long day;
     if (!parseLong(dateString, &newPosStr, 10, &day))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     dateString = newPosStr;
 
     if (!*dateString)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
 
     if (day < 0)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
 
     long year = 0;
     if (day > 31) {
         // ### where is the boundary and what happens below?
         if (*dateString != '/')
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         // looks like a YYYY/MM/DD date
         if (!*++dateString)
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         year = day;
         if (!parseLong(dateString, &newPosStr, 10, &month))
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         month -= 1;
         dateString = newPosStr;
         if (*dateString++ != '/' || !*dateString)
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         if (!parseLong(dateString, &newPosStr, 10, &day))
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         dateString = newPosStr;
     } else if (*dateString == '/' && month == -1) {
         dateString++;
         // This looks like a MM/DD/YYYY date, not an RFC date.
         month = day - 1; // 0-based
         if (!parseLong(dateString, &newPosStr, 10, &day))
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         if (day < 1 || day > 31)
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         dateString = newPosStr;
         if (*dateString == '/')
             dateString++;
         if (!*dateString)
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
      } else {
         if (*dateString == '-')
             dateString++;
@@ -830,28 +828,28 @@
         if (month == -1) { // not found yet
             month = findMonth(dateString);
             if (month == -1)
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
 
             while (*dateString && *dateString != '-' && *dateString != ',' && !isASCIISpace(*dateString))
                 dateString++;
 
             if (!*dateString)
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
 
             // '-99 23:12:40 GMT'
             if (*dateString != '-' && *dateString != '/' && *dateString != ',' && !isASCIISpace(*dateString))
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
             dateString++;
         }
     }
 
     if (month < 0 || month > 11)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
 
     // '99 23:12:40 GMT'
     if (year <= 0 && *dateString) {
         if (!parseLong(dateString, &newPosStr, 10, &year))
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
     }
 
     // Don't fail if the time is missing.
@@ -864,7 +862,7 @@
         // ' 23:12:40 GMT'
         if (!(isASCIISpace(*newPosStr) || *newPosStr == ',')) {
             if (*newPosStr != ':')
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
             // There was no year; the number was the hour.
             year = -1;
         } else {
@@ -883,50 +881,50 @@
             dateString = newPosStr;
 
             if (hour < 0 || hour > 23)
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
 
             if (!*dateString)
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
 
             // ':12:40 GMT'
             if (*dateString++ != ':')
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
 
             if (!parseLong(dateString, &newPosStr, 10, &minute))
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
             dateString = newPosStr;
 
             if (minute < 0 || minute > 59)
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
 
             // ':40 GMT'
             if (*dateString && *dateString != ':' && !isASCIISpace(*dateString))
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
 
             // seconds are optional in rfc822 + rfc2822
             if (*dateString ==':') {
                 dateString++;
 
                 if (!parseLong(dateString, &newPosStr, 10, &second))
-                    return NaN;
+                    return std::numeric_limits<double>::quiet_NaN();
                 dateString = newPosStr;
 
                 if (second < 0 || second > 59)
-                    return NaN;
+                    return std::numeric_limits<double>::quiet_NaN();
             }
 
             skipSpacesAndComments(dateString);
 
             if (strncasecmp(dateString, "AM", 2) == 0) {
                 if (hour > 12)
-                    return NaN;
+                    return std::numeric_limits<double>::quiet_NaN();
                 if (hour == 12)
                     hour = 0;
                 dateString += 2;
                 skipSpacesAndComments(dateString);
             } else if (strncasecmp(dateString, "PM", 2) == 0) {
                 if (hour > 12)
-                    return NaN;
+                    return std::numeric_limits<double>::quiet_NaN();
                 if (hour != 12)
                     hour += 12;
                 dateString += 2;
@@ -956,11 +954,11 @@
         if (*dateString == '+' || *dateString == '-') {
             long o;
             if (!parseLong(dateString, &newPosStr, 10, &o))
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
             dateString = newPosStr;
 
             if (o < -9959 || o > 9959)
-                return NaN;
+                return std::numeric_limits<double>::quiet_NaN();
 
             int sgn = (o < 0) ? -1 : 1;
             o = labs(o);
@@ -969,7 +967,7 @@
             } else { // GMT+05:00
                 long o2;
                 if (!parseLong(dateString, &newPosStr, 10, &o2))
-                    return NaN;
+                    return std::numeric_limits<double>::quiet_NaN();
                 dateString = newPosStr;
                 offset = (o * 60 + o2) * sgn;
             }
@@ -990,7 +988,7 @@
 
     if (*dateString && year == -1) {
         if (!parseLong(dateString, &newPosStr, 10, &year))
-            return NaN;
+            return std::numeric_limits<double>::quiet_NaN();
         dateString = newPosStr;
     }
 
@@ -998,7 +996,7 @@
 
     // Trailing garbage
     if (*dateString)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
 
     // Y2K: Handle 2 digit years.
     if (year >= 0 && year < 100) {
@@ -1017,7 +1015,7 @@
     int offset;
     double ms = parseDateFromNullTerminatedCharacters(dateString, haveTZ, offset);
     if (isnan(ms))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
 
     // fall back to local timezone
     if (!haveTZ) {
@@ -1031,9 +1029,9 @@
 double timeClip(double t)
 {
     if (!isfinite(t))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     if (fabs(t) > maxECMAScriptTime)
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
     return trunc(t);
 }
 
@@ -1191,7 +1189,7 @@
     int offset;
     double ms = WTF::parseDateFromNullTerminatedCharacters(dateString, haveTZ, offset);
     if (isnan(ms))
-        return NaN;
+        return std::numeric_limits<double>::quiet_NaN();
 
     // fall back to local timezone
     if (!haveTZ) {
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to