| Index: src/js/date.js
|
| diff --git a/src/js/date.js b/src/js/date.js
|
| index 44e8f56e71b05926cdd7ef7f278165d416c2db98..3d6ec69d55031912a512a44a5f9de18626fd5afb 100644
|
| --- a/src/js/date.js
|
| +++ b/src/js/date.js
|
| @@ -2,8 +2,6 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -var $createDate;
|
| -
|
| // -------------------------------------------------------------------
|
|
|
| (function(global, utils) {
|
| @@ -21,6 +19,7 @@ var InternalArray = utils.InternalArray;
|
| var IsFinite;
|
| var MathAbs;
|
| var MathFloor;
|
| +var NaN = %GetRootNaN();
|
|
|
| utils.Import(function(from) {
|
| IsFinite = from.IsFinite;
|
| @@ -32,7 +31,7 @@ utils.Import(function(from) {
|
|
|
| // This file contains date support implemented in JavaScript.
|
|
|
| -var timezone_cache_time = NAN;
|
| +var timezone_cache_time = NaN;
|
| var timezone_cache_timezone;
|
|
|
| function LocalTimezone(t) {
|
| @@ -58,10 +57,10 @@ function UTC(time) {
|
|
|
| // ECMA 262 - 15.9.1.11
|
| function MakeTime(hour, min, sec, ms) {
|
| - if (!IsFinite(hour)) return NAN;
|
| - if (!IsFinite(min)) return NAN;
|
| - if (!IsFinite(sec)) return NAN;
|
| - if (!IsFinite(ms)) return NAN;
|
| + if (!IsFinite(hour)) return NaN;
|
| + if (!IsFinite(min)) return NaN;
|
| + if (!IsFinite(sec)) return NaN;
|
| + if (!IsFinite(ms)) return NaN;
|
| return TO_INTEGER(hour) * msPerHour
|
| + TO_INTEGER(min) * msPerMinute
|
| + TO_INTEGER(sec) * msPerSecond
|
| @@ -82,7 +81,7 @@ function TimeInYear(year) {
|
| // MakeDay(2007, -33, 1) --> MakeDay(2004, 3, 1)
|
| // MakeDay(2007, 14, -50) --> MakeDay(2007, 8, 11)
|
| function MakeDay(year, month, date) {
|
| - if (!IsFinite(year) || !IsFinite(month) || !IsFinite(date)) return NAN;
|
| + if (!IsFinite(year) || !IsFinite(month) || !IsFinite(date)) return NaN;
|
|
|
| // Convert to integer and map -0 to 0.
|
| year = TO_INTEGER_MAP_MINUS_ZERO(year);
|
| @@ -91,7 +90,7 @@ function MakeDay(year, month, date) {
|
|
|
| if (year < kMinYear || year > kMaxYear ||
|
| month < kMinMonth || month > kMaxMonth) {
|
| - return NAN;
|
| + return NaN;
|
| }
|
|
|
| // Now we rely on year and month being SMIs.
|
| @@ -107,15 +106,15 @@ function MakeDate(day, time) {
|
| // is no way that the time can be within range even after UTC
|
| // conversion we return NaN immediately instead of relying on
|
| // TimeClip to do it.
|
| - if (MathAbs(time) > MAX_TIME_BEFORE_UTC) return NAN;
|
| + if (MathAbs(time) > MAX_TIME_BEFORE_UTC) return NaN;
|
| return time;
|
| }
|
|
|
|
|
| // ECMA 262 - 15.9.1.14
|
| function TimeClip(time) {
|
| - if (!IsFinite(time)) return NAN;
|
| - if (MathAbs(time) > MAX_TIME_MS) return NAN;
|
| + if (!IsFinite(time)) return NaN;
|
| + if (MathAbs(time) > MAX_TIME_MS) return NaN;
|
| return TO_INTEGER(time) + 0;
|
| }
|
|
|
| @@ -265,7 +264,7 @@ var parse_buffer = new InternalArray(8);
|
| // ECMA 262 - 15.9.4.2
|
| function DateParse(string) {
|
| var arr = %DateParseString(string, parse_buffer);
|
| - if (IS_NULL(arr)) return NAN;
|
| + if (IS_NULL(arr)) return NaN;
|
|
|
| var day = MakeDay(arr[0], arr[1], arr[2]);
|
| var time = MakeTime(arr[3], arr[4], arr[5], arr[6]);
|
| @@ -707,7 +706,7 @@ function DateGetYear() {
|
| function DateSetYear(year) {
|
| CHECK_DATE(this);
|
| year = TO_NUMBER(year);
|
| - if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN);
|
| + if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NaN);
|
| year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99)
|
| ? 1900 + TO_INTEGER(year) : year;
|
| var t = LOCAL_DATE_VALUE(this);
|
| @@ -783,7 +782,7 @@ function DateToJSON(key) {
|
|
|
|
|
| var date_cache_version_holder;
|
| -var date_cache_version = NAN;
|
| +var date_cache_version = NaN;
|
|
|
|
|
| function CheckDateCacheCurrent() {
|
| @@ -797,11 +796,11 @@ function CheckDateCacheCurrent() {
|
| date_cache_version = date_cache_version_holder[0];
|
|
|
| // Reset the timezone cache:
|
| - timezone_cache_time = NAN;
|
| + timezone_cache_time = NaN;
|
| timezone_cache_timezone = UNDEFINED;
|
|
|
| // Reset the date cache:
|
| - Date_cache.time = NAN;
|
| + Date_cache.time = NaN;
|
| Date_cache.string = null;
|
| }
|
|
|
|
|