| Index: src/js/date.js
|
| diff --git a/src/js/date.js b/src/js/date.js
|
| index 33205c124a67b50ecd9446871e2b6eeb7db311ac..88e293717c1deaf4cf7c43b42c7129e3a73f67f7 100644
|
| --- a/src/js/date.js
|
| +++ b/src/js/date.js
|
| @@ -49,14 +49,6 @@ function LocalTimezone(t) {
|
| }
|
|
|
|
|
| -function UTC(time) {
|
| - if (NUMBER_IS_NAN(time)) return time;
|
| - // local_time_offset is needed before the call to DaylightSavingsOffset,
|
| - // so it may be uninitialized.
|
| - return %DateToUTC(time);
|
| -}
|
| -
|
| -
|
| // ECMA 262 - 15.9.1.11
|
| function MakeTime(hour, min, sec, ms) {
|
| if (!IsFinite(hour)) return NaN;
|
| @@ -115,80 +107,6 @@ function TimeClip(time) {
|
| }
|
|
|
|
|
| -// The Date cache is used to limit the cost of parsing the same Date
|
| -// strings over and over again.
|
| -var Date_cache = {
|
| - // Cached time value.
|
| - time: 0,
|
| - // String input for which the cached time is valid.
|
| - string: null
|
| -};
|
| -
|
| -
|
| -function DateConstructor(year, month, date, hours, minutes, seconds, ms) {
|
| - if (IS_UNDEFINED(new.target)) {
|
| - // ECMA 262 - 15.9.2
|
| - return %_Call(DateToString, new GlobalDate());
|
| - }
|
| -
|
| - // ECMA 262 - 15.9.3
|
| - var argc = %_ArgumentsLength();
|
| - var value;
|
| - var result;
|
| - if (argc == 0) {
|
| - value = %DateCurrentTime();
|
| - result = %NewObject(GlobalDate, new.target);
|
| - SET_UTC_DATE_VALUE(result, value);
|
| - } else if (argc == 1) {
|
| - if (IS_NUMBER(year)) {
|
| - value = TimeClip(year);
|
| -
|
| - } else if (IS_STRING(year)) {
|
| - // Probe the Date cache. If we already have a time value for the
|
| - // given time, we re-use that instead of parsing the string again.
|
| - CheckDateCacheCurrent();
|
| - var cache = Date_cache;
|
| - if (cache.string === year) {
|
| - value = cache.time;
|
| - } else {
|
| - value = DateParse(year);
|
| - if (!NUMBER_IS_NAN(value)) {
|
| - cache.time = value;
|
| - cache.string = year;
|
| - }
|
| - }
|
| -
|
| - } else if (IS_DATE(year)) {
|
| - value = UTC_DATE_VALUE(year);
|
| -
|
| - } else {
|
| - var time = TO_PRIMITIVE(year);
|
| - value = IS_STRING(time) ? DateParse(time) : TO_NUMBER(time);
|
| - }
|
| - result = %NewObject(GlobalDate, new.target);
|
| - SET_UTC_DATE_VALUE(result, value);
|
| - } else {
|
| - year = TO_NUMBER(year);
|
| - month = TO_NUMBER(month);
|
| - date = argc > 2 ? TO_NUMBER(date) : 1;
|
| - hours = argc > 3 ? TO_NUMBER(hours) : 0;
|
| - minutes = argc > 4 ? TO_NUMBER(minutes) : 0;
|
| - seconds = argc > 5 ? TO_NUMBER(seconds) : 0;
|
| - ms = argc > 6 ? TO_NUMBER(ms) : 0;
|
| - year = (!NUMBER_IS_NAN(year) &&
|
| - 0 <= TO_INTEGER(year) &&
|
| - TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year;
|
| - var day = MakeDay(year, month, date);
|
| - var time = MakeTime(hours, minutes, seconds, ms);
|
| - value = MakeDate(day, time);
|
| - result = %NewObject(GlobalDate, new.target);
|
| - SET_LOCAL_DATE_VALUE(result, value);
|
| - }
|
| -
|
| - return result;
|
| -}
|
| -
|
| -
|
| var WeekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
| var Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
|
| 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
| @@ -260,51 +178,6 @@ function DatePrintString(date) {
|
|
|
| // -------------------------------------------------------------------
|
|
|
| -// Reused output buffer. Used when parsing date strings.
|
| -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;
|
| -
|
| - var day = MakeDay(arr[0], arr[1], arr[2]);
|
| - var time = MakeTime(arr[3], arr[4], arr[5], arr[6]);
|
| - var date = MakeDate(day, time);
|
| -
|
| - if (IS_NULL(arr[7])) {
|
| - return TimeClip(UTC(date));
|
| - } else {
|
| - return TimeClip(date - arr[7] * 1000);
|
| - }
|
| -}
|
| -
|
| -
|
| -// ECMA 262 - 15.9.4.3
|
| -function DateUTC(year, month, date, hours, minutes, seconds, ms) {
|
| - year = TO_NUMBER(year);
|
| - month = TO_NUMBER(month);
|
| - var argc = %_ArgumentsLength();
|
| - date = argc > 2 ? TO_NUMBER(date) : 1;
|
| - hours = argc > 3 ? TO_NUMBER(hours) : 0;
|
| - minutes = argc > 4 ? TO_NUMBER(minutes) : 0;
|
| - seconds = argc > 5 ? TO_NUMBER(seconds) : 0;
|
| - ms = argc > 6 ? TO_NUMBER(ms) : 0;
|
| - year = (!NUMBER_IS_NAN(year) &&
|
| - 0 <= TO_INTEGER(year) &&
|
| - TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year;
|
| - var day = MakeDay(year, month, date);
|
| - var time = MakeTime(hours, minutes, seconds, ms);
|
| - return TimeClip(MakeDate(day, time));
|
| -}
|
| -
|
| -
|
| -// ECMA 262 - 15.9.4.4
|
| -function DateNow() {
|
| - return %DateCurrentTime();
|
| -}
|
| -
|
| -
|
| // ECMA 262 - 15.9.5.2
|
| function DateToString() {
|
| CHECK_DATE(this);
|
| @@ -359,13 +232,6 @@ function DateToLocaleTimeString() {
|
| }
|
|
|
|
|
| -// ECMA 262 - 15.9.5.8
|
| -function DateValueOf() {
|
| - CHECK_DATE(this);
|
| - return UTC_DATE_VALUE(this);
|
| -}
|
| -
|
| -
|
| // ECMA 262 - 15.9.5.9
|
| function DateGetTime() {
|
| CHECK_DATE(this);
|
| @@ -739,39 +605,6 @@ function DateToGMTString() {
|
| }
|
|
|
|
|
| -function PadInt(n, digits) {
|
| - if (digits == 1) return n;
|
| - return n < %_MathPow(10, digits - 1) ? '0' + PadInt(n, digits - 1) : n;
|
| -}
|
| -
|
| -
|
| -// ECMA 262 - 20.3.4.36
|
| -function DateToISOString() {
|
| - CHECK_DATE(this);
|
| - var t = UTC_DATE_VALUE(this);
|
| - if (NUMBER_IS_NAN(t)) throw MakeRangeError(kInvalidTimeValue);
|
| - var year = UTC_YEAR(this);
|
| - var year_string;
|
| - if (year >= 0 && year <= 9999) {
|
| - year_string = PadInt(year, 4);
|
| - } else {
|
| - if (year < 0) {
|
| - year_string = "-" + PadInt(-year, 6);
|
| - } else {
|
| - year_string = "+" + PadInt(year, 6);
|
| - }
|
| - }
|
| - return year_string +
|
| - '-' + PadInt(UTC_MONTH(this) + 1, 2) +
|
| - '-' + PadInt(UTC_DAY(this), 2) +
|
| - 'T' + PadInt(UTC_HOUR(this), 2) +
|
| - ':' + PadInt(UTC_MIN(this), 2) +
|
| - ':' + PadInt(UTC_SEC(this), 2) +
|
| - '.' + PadInt(UTC_MS(this), 3) +
|
| - 'Z';
|
| -}
|
| -
|
| -
|
| // 20.3.4.37 Date.prototype.toJSON ( key )
|
| function DateToJSON(key) {
|
| var o = TO_OBJECT(this);
|
| @@ -800,34 +633,12 @@ function CheckDateCacheCurrent() {
|
| // Reset the timezone cache:
|
| timezone_cache_time = NaN;
|
| timezone_cache_timezone = UNDEFINED;
|
| -
|
| - // Reset the date cache:
|
| - Date_cache.time = NaN;
|
| - Date_cache.string = null;
|
| -}
|
| -
|
| -
|
| -function CreateDate(time) {
|
| - var date = new GlobalDate();
|
| - date.setTime(time);
|
| - return date;
|
| }
|
|
|
| // -------------------------------------------------------------------
|
|
|
| -%SetCode(GlobalDate, DateConstructor);
|
| %FunctionSetPrototype(GlobalDate, new GlobalObject());
|
|
|
| -// Set up non-enumerable properties of the Date object itself.
|
| -utils.InstallFunctions(GlobalDate, DONT_ENUM, [
|
| - "UTC", DateUTC,
|
| - "parse", DateParse,
|
| - "now", DateNow
|
| -]);
|
| -
|
| -// Set up non-enumerable constructor property of the Date prototype object.
|
| -%AddNamedProperty(GlobalDate.prototype, "constructor", GlobalDate, DONT_ENUM);
|
| -
|
| // Set up non-enumerable functions of the Date prototype object and
|
| // set their names.
|
| utils.InstallFunctions(GlobalDate.prototype, DONT_ENUM, [
|
| @@ -837,7 +648,6 @@ utils.InstallFunctions(GlobalDate.prototype, DONT_ENUM, [
|
| "toLocaleString", DateToLocaleString,
|
| "toLocaleDateString", DateToLocaleDateString,
|
| "toLocaleTimeString", DateToLocaleTimeString,
|
| - "valueOf", DateValueOf,
|
| "getTime", DateGetTime,
|
| "getFullYear", DateGetFullYear,
|
| "getUTCFullYear", DateGetUTCFullYear,
|
| @@ -875,10 +685,7 @@ utils.InstallFunctions(GlobalDate.prototype, DONT_ENUM, [
|
| "toUTCString", DateToUTCString,
|
| "getYear", DateGetYear,
|
| "setYear", DateSetYear,
|
| - "toISOString", DateToISOString,
|
| "toJSON", DateToJSON
|
| ]);
|
|
|
| -%InstallToContext(["create_date_fun", CreateDate]);
|
| -
|
| })
|
|
|