Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1159)

Unified Diff: src/date.js

Issue 1398733002: Move builtin JavaScript sources into own directory. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Also move macros.py file. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/d8.gyp ('k') | src/generator.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/date.js
diff --git a/src/date.js b/src/date.js
deleted file mode 100644
index 44e8f56e71b05926cdd7ef7f278165d416c2db98..0000000000000000000000000000000000000000
--- a/src/date.js
+++ /dev/null
@@ -1,883 +0,0 @@
-// Copyright 2006-2008 the V8 project authors. All rights reserved.
-// 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) {
-
-"use strict";
-
-%CheckIsBootstrapping();
-
-// -------------------------------------------------------------------
-// Imports
-
-var GlobalDate = global.Date;
-var GlobalObject = global.Object;
-var InternalArray = utils.InternalArray;
-var IsFinite;
-var MathAbs;
-var MathFloor;
-
-utils.Import(function(from) {
- IsFinite = from.IsFinite;
- MathAbs = from.MathAbs;
- MathFloor = from.MathFloor;
-});
-
-// -------------------------------------------------------------------
-
-// This file contains date support implemented in JavaScript.
-
-var timezone_cache_time = NAN;
-var timezone_cache_timezone;
-
-function LocalTimezone(t) {
- if (NUMBER_IS_NAN(t)) return "";
- CheckDateCacheCurrent();
- if (t == timezone_cache_time) {
- return timezone_cache_timezone;
- }
- var timezone = %DateLocalTimezone(t);
- timezone_cache_time = t;
- timezone_cache_timezone = timezone;
- return timezone;
-}
-
-
-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;
- 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
- + TO_INTEGER(ms);
-}
-
-
-// ECMA 262 - 15.9.1.12
-function TimeInYear(year) {
- return DaysInYear(year) * msPerDay;
-}
-
-
-// Compute number of days given a year, month, date.
-// Note that month and date can lie outside the normal range.
-// For example:
-// MakeDay(2007, -4, 20) --> MakeDay(2006, 8, 20)
-// 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;
-
- // Convert to integer and map -0 to 0.
- year = TO_INTEGER_MAP_MINUS_ZERO(year);
- month = TO_INTEGER_MAP_MINUS_ZERO(month);
- date = TO_INTEGER_MAP_MINUS_ZERO(date);
-
- if (year < kMinYear || year > kMaxYear ||
- month < kMinMonth || month > kMaxMonth) {
- return NAN;
- }
-
- // Now we rely on year and month being SMIs.
- return %DateMakeDay(year | 0, month | 0) + date - 1;
-}
-
-
-// ECMA 262 - 15.9.1.13
-function MakeDate(day, time) {
- var time = day * msPerDay + time;
- // Some of our runtime funtions for computing UTC(time) rely on
- // times not being significantly larger than MAX_TIME_MS. If there
- // 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;
- return time;
-}
-
-
-// ECMA 262 - 15.9.1.14
-function TimeClip(time) {
- if (!IsFinite(time)) return NAN;
- if (MathAbs(time) > MAX_TIME_MS) return NAN;
- return TO_INTEGER(time) + 0;
-}
-
-
-// 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 (!%_IsConstructCall()) {
- // ECMA 262 - 15.9.2
- return %_CallFunction(new GlobalDate(), DateToString);
- }
-
- // ECMA 262 - 15.9.3
- var argc = %_ArgumentsLength();
- var value;
- if (argc == 0) {
- value = %DateCurrentTime();
- SET_UTC_DATE_VALUE(this, 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);
- }
- SET_UTC_DATE_VALUE(this, 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);
- SET_LOCAL_DATE_VALUE(this, value);
- }
-}
-
-
-var WeekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
-var Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
- 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
-
-
-function TwoDigitString(value) {
- return value < 10 ? "0" + value : "" + value;
-}
-
-
-function DateString(date) {
- CHECK_DATE(date);
- return WeekDays[LOCAL_WEEKDAY(date)] + ' '
- + Months[LOCAL_MONTH(date)] + ' '
- + TwoDigitString(LOCAL_DAY(date)) + ' '
- + LOCAL_YEAR(date);
-}
-
-
-var LongWeekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday',
- 'Thursday', 'Friday', 'Saturday'];
-var LongMonths = ['January', 'February', 'March', 'April', 'May', 'June',
- 'July', 'August', 'September', 'October', 'November', 'December'];
-
-
-function LongDateString(date) {
- CHECK_DATE(date);
- return LongWeekDays[LOCAL_WEEKDAY(date)] + ', '
- + LongMonths[LOCAL_MONTH(date)] + ' '
- + TwoDigitString(LOCAL_DAY(date)) + ', '
- + LOCAL_YEAR(date);
-}
-
-
-function TimeString(date) {
- CHECK_DATE(date);
- return TwoDigitString(LOCAL_HOUR(date)) + ':'
- + TwoDigitString(LOCAL_MIN(date)) + ':'
- + TwoDigitString(LOCAL_SEC(date));
-}
-
-
-function TimeStringUTC(date) {
- CHECK_DATE(date);
- return TwoDigitString(UTC_HOUR(date)) + ':'
- + TwoDigitString(UTC_MIN(date)) + ':'
- + TwoDigitString(UTC_SEC(date));
-}
-
-
-function LocalTimezoneString(date) {
- CHECK_DATE(date);
- var timezone = LocalTimezone(UTC_DATE_VALUE(date));
-
- var timezoneOffset = -TIMEZONE_OFFSET(date);
- var sign = (timezoneOffset >= 0) ? 1 : -1;
- var hours = MathFloor((sign * timezoneOffset)/60);
- var min = MathFloor((sign * timezoneOffset)%60);
- var gmt = ' GMT' + ((sign == 1) ? '+' : '-') +
- TwoDigitString(hours) + TwoDigitString(min);
- return gmt + ' (' + timezone + ')';
-}
-
-
-function DatePrintString(date) {
- CHECK_DATE(date);
- return DateString(date) + ' ' + TimeString(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);
- var t = UTC_DATE_VALUE(this)
- if (NUMBER_IS_NAN(t)) return kInvalidDate;
- var time_zone_string = LocalTimezoneString(this)
- return DatePrintString(this) + time_zone_string;
-}
-
-
-// ECMA 262 - 15.9.5.3
-function DateToDateString() {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- if (NUMBER_IS_NAN(t)) return kInvalidDate;
- return DateString(this);
-}
-
-
-// ECMA 262 - 15.9.5.4
-function DateToTimeString() {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- if (NUMBER_IS_NAN(t)) return kInvalidDate;
- var time_zone_string = LocalTimezoneString(this);
- return TimeString(this) + time_zone_string;
-}
-
-
-// ECMA 262 - 15.9.5.5
-function DateToLocaleString() {
- CHECK_DATE(this);
- return %_CallFunction(this, DateToString);
-}
-
-
-// ECMA 262 - 15.9.5.6
-function DateToLocaleDateString() {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- if (NUMBER_IS_NAN(t)) return kInvalidDate;
- return LongDateString(this);
-}
-
-
-// ECMA 262 - 15.9.5.7
-function DateToLocaleTimeString() {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- if (NUMBER_IS_NAN(t)) return kInvalidDate;
- return TimeString(this);
-}
-
-
-// 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);
- return UTC_DATE_VALUE(this);
-}
-
-
-// ECMA 262 - 15.9.5.10
-function DateGetFullYear() {
- CHECK_DATE(this);
- return LOCAL_YEAR(this);
-}
-
-
-// ECMA 262 - 15.9.5.11
-function DateGetUTCFullYear() {
- CHECK_DATE(this);
- return UTC_YEAR(this);
-}
-
-
-// ECMA 262 - 15.9.5.12
-function DateGetMonth() {
- CHECK_DATE(this);
- return LOCAL_MONTH(this);
-}
-
-
-// ECMA 262 - 15.9.5.13
-function DateGetUTCMonth() {
- CHECK_DATE(this);
- return UTC_MONTH(this);
-}
-
-
-// ECMA 262 - 15.9.5.14
-function DateGetDate() {
- CHECK_DATE(this);
- return LOCAL_DAY(this);
-}
-
-
-// ECMA 262 - 15.9.5.15
-function DateGetUTCDate() {
- CHECK_DATE(this);
- return UTC_DAY(this);
-}
-
-
-// ECMA 262 - 15.9.5.16
-function DateGetDay() {
- CHECK_DATE(this);
- return LOCAL_WEEKDAY(this);
-}
-
-
-// ECMA 262 - 15.9.5.17
-function DateGetUTCDay() {
- CHECK_DATE(this);
- return UTC_WEEKDAY(this);
-}
-
-
-// ECMA 262 - 15.9.5.18
-function DateGetHours() {
- CHECK_DATE(this);
- return LOCAL_HOUR(this);
-}
-
-
-// ECMA 262 - 15.9.5.19
-function DateGetUTCHours() {
- CHECK_DATE(this);
- return UTC_HOUR(this);
-}
-
-
-// ECMA 262 - 15.9.5.20
-function DateGetMinutes() {
- CHECK_DATE(this);
- return LOCAL_MIN(this);
-}
-
-
-// ECMA 262 - 15.9.5.21
-function DateGetUTCMinutes() {
- CHECK_DATE(this);
- return UTC_MIN(this);
-}
-
-
-// ECMA 262 - 15.9.5.22
-function DateGetSeconds() {
- CHECK_DATE(this);
- return LOCAL_SEC(this);
-}
-
-
-// ECMA 262 - 15.9.5.23
-function DateGetUTCSeconds() {
- CHECK_DATE(this);
- return UTC_SEC(this)
-}
-
-
-// ECMA 262 - 15.9.5.24
-function DateGetMilliseconds() {
- CHECK_DATE(this);
- return LOCAL_MS(this);
-}
-
-
-// ECMA 262 - 15.9.5.25
-function DateGetUTCMilliseconds() {
- CHECK_DATE(this);
- return UTC_MS(this);
-}
-
-
-// ECMA 262 - 15.9.5.26
-function DateGetTimezoneOffset() {
- CHECK_DATE(this);
- return TIMEZONE_OFFSET(this);
-}
-
-
-// ECMA 262 - 15.9.5.27
-function DateSetTime(ms) {
- CHECK_DATE(this);
- SET_UTC_DATE_VALUE(this, TO_NUMBER(ms));
- return UTC_DATE_VALUE(this);
-}
-
-
-// ECMA 262 - 15.9.5.28
-function DateSetMilliseconds(ms) {
- CHECK_DATE(this);
- var t = LOCAL_DATE_VALUE(this);
- ms = TO_NUMBER(ms);
- var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms);
- return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
-}
-
-
-// ECMA 262 - 15.9.5.29
-function DateSetUTCMilliseconds(ms) {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- ms = TO_NUMBER(ms);
- var time = MakeTime(UTC_HOUR(this),
- UTC_MIN(this),
- UTC_SEC(this),
- ms);
- return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
-}
-
-
-// ECMA 262 - 15.9.5.30
-function DateSetSeconds(sec, ms) {
- CHECK_DATE(this);
- var t = LOCAL_DATE_VALUE(this);
- sec = TO_NUMBER(sec);
- ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : TO_NUMBER(ms);
- var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms);
- return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
-}
-
-
-// ECMA 262 - 15.9.5.31
-function DateSetUTCSeconds(sec, ms) {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- sec = TO_NUMBER(sec);
- ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : TO_NUMBER(ms);
- var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms);
- return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
-}
-
-
-// ECMA 262 - 15.9.5.33
-function DateSetMinutes(min, sec, ms) {
- CHECK_DATE(this);
- var t = LOCAL_DATE_VALUE(this);
- min = TO_NUMBER(min);
- var argc = %_ArgumentsLength();
- sec = argc < 2 ? LOCAL_SEC(this) : TO_NUMBER(sec);
- ms = argc < 3 ? LOCAL_MS(this) : TO_NUMBER(ms);
- var time = MakeTime(LOCAL_HOUR(this), min, sec, ms);
- return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
-}
-
-
-// ECMA 262 - 15.9.5.34
-function DateSetUTCMinutes(min, sec, ms) {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- min = TO_NUMBER(min);
- var argc = %_ArgumentsLength();
- sec = argc < 2 ? UTC_SEC(this) : TO_NUMBER(sec);
- ms = argc < 3 ? UTC_MS(this) : TO_NUMBER(ms);
- var time = MakeTime(UTC_HOUR(this), min, sec, ms);
- return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
-}
-
-
-// ECMA 262 - 15.9.5.35
-function DateSetHours(hour, min, sec, ms) {
- CHECK_DATE(this);
- var t = LOCAL_DATE_VALUE(this);
- hour = TO_NUMBER(hour);
- var argc = %_ArgumentsLength();
- min = argc < 2 ? LOCAL_MIN(this) : TO_NUMBER(min);
- sec = argc < 3 ? LOCAL_SEC(this) : TO_NUMBER(sec);
- ms = argc < 4 ? LOCAL_MS(this) : TO_NUMBER(ms);
- var time = MakeTime(hour, min, sec, ms);
- return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
-}
-
-
-// ECMA 262 - 15.9.5.34
-function DateSetUTCHours(hour, min, sec, ms) {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- hour = TO_NUMBER(hour);
- var argc = %_ArgumentsLength();
- min = argc < 2 ? UTC_MIN(this) : TO_NUMBER(min);
- sec = argc < 3 ? UTC_SEC(this) : TO_NUMBER(sec);
- ms = argc < 4 ? UTC_MS(this) : TO_NUMBER(ms);
- var time = MakeTime(hour, min, sec, ms);
- return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
-}
-
-
-// ECMA 262 - 15.9.5.36
-function DateSetDate(date) {
- CHECK_DATE(this);
- var t = LOCAL_DATE_VALUE(this);
- date = TO_NUMBER(date);
- var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date);
- return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this)));
-}
-
-
-// ECMA 262 - 15.9.5.37
-function DateSetUTCDate(date) {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- date = TO_NUMBER(date);
- var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date);
- return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this)));
-}
-
-
-// ECMA 262 - 15.9.5.38
-function DateSetMonth(month, date) {
- CHECK_DATE(this);
- var t = LOCAL_DATE_VALUE(this);
- month = TO_NUMBER(month);
- date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : TO_NUMBER(date);
- var day = MakeDay(LOCAL_YEAR(this), month, date);
- return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this)));
-}
-
-
-// ECMA 262 - 15.9.5.39
-function DateSetUTCMonth(month, date) {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- month = TO_NUMBER(month);
- date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : TO_NUMBER(date);
- var day = MakeDay(UTC_YEAR(this), month, date);
- return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this)));
-}
-
-
-// ECMA 262 - 15.9.5.40
-function DateSetFullYear(year, month, date) {
- CHECK_DATE(this);
- var t = LOCAL_DATE_VALUE(this);
- year = TO_NUMBER(year);
- var argc = %_ArgumentsLength();
- var time ;
- if (NUMBER_IS_NAN(t)) {
- month = argc < 2 ? 0 : TO_NUMBER(month);
- date = argc < 3 ? 1 : TO_NUMBER(date);
- time = 0;
- } else {
- month = argc < 2 ? LOCAL_MONTH(this) : TO_NUMBER(month);
- date = argc < 3 ? LOCAL_DAY(this) : TO_NUMBER(date);
- time = LOCAL_TIME_IN_DAY(this);
- }
- var day = MakeDay(year, month, date);
- return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time));
-}
-
-
-// ECMA 262 - 15.9.5.41
-function DateSetUTCFullYear(year, month, date) {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- year = TO_NUMBER(year);
- var argc = %_ArgumentsLength();
- var time ;
- if (NUMBER_IS_NAN(t)) {
- month = argc < 2 ? 0 : TO_NUMBER(month);
- date = argc < 3 ? 1 : TO_NUMBER(date);
- time = 0;
- } else {
- month = argc < 2 ? UTC_MONTH(this) : TO_NUMBER(month);
- date = argc < 3 ? UTC_DAY(this) : TO_NUMBER(date);
- time = UTC_TIME_IN_DAY(this);
- }
- var day = MakeDay(year, month, date);
- return SET_UTC_DATE_VALUE(this, MakeDate(day, time));
-}
-
-
-// ECMA 262 - 15.9.5.42
-function DateToUTCString() {
- CHECK_DATE(this);
- var t = UTC_DATE_VALUE(this);
- if (NUMBER_IS_NAN(t)) return kInvalidDate;
- // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT
- return WeekDays[UTC_WEEKDAY(this)] + ', '
- + TwoDigitString(UTC_DAY(this)) + ' '
- + Months[UTC_MONTH(this)] + ' '
- + UTC_YEAR(this) + ' '
- + TimeStringUTC(this) + ' GMT';
-}
-
-
-// ECMA 262 - B.2.4
-function DateGetYear() {
- CHECK_DATE(this);
- return LOCAL_YEAR(this) - 1900;
-}
-
-
-// ECMA 262 - B.2.5
-function DateSetYear(year) {
- CHECK_DATE(this);
- year = TO_NUMBER(year);
- 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);
- var month, date, time;
- if (NUMBER_IS_NAN(t)) {
- month = 0;
- date = 1;
- time = 0;
- } else {
- month = LOCAL_MONTH(this);
- date = LOCAL_DAY(this);
- time = LOCAL_TIME_IN_DAY(this);
- }
- var day = MakeDay(year, month, date);
- return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time));
-}
-
-
-// ECMA 262 - B.2.6
-//
-// Notice that this does not follow ECMA 262 completely. ECMA 262
-// says that toGMTString should be the same Function object as
-// toUTCString. JSC does not do this, so for compatibility we do not
-// do that either. Instead, we create a new function whose name
-// property will return toGMTString.
-function DateToGMTString() {
- return %_CallFunction(this, DateToUTCString);
-}
-
-
-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);
- var tv = TO_PRIMITIVE_NUMBER(o);
- if (IS_NUMBER(tv) && !NUMBER_IS_FINITE(tv)) {
- return null;
- }
- return o.toISOString();
-}
-
-
-var date_cache_version_holder;
-var date_cache_version = NAN;
-
-
-function CheckDateCacheCurrent() {
- if (!date_cache_version_holder) {
- date_cache_version_holder = %DateCacheVersion();
- if (!date_cache_version_holder) return;
- }
- if (date_cache_version_holder[0] == date_cache_version) {
- return;
- }
- date_cache_version = date_cache_version_holder[0];
-
- // 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, [
- "toString", DateToString,
- "toDateString", DateToDateString,
- "toTimeString", DateToTimeString,
- "toLocaleString", DateToLocaleString,
- "toLocaleDateString", DateToLocaleDateString,
- "toLocaleTimeString", DateToLocaleTimeString,
- "valueOf", DateValueOf,
- "getTime", DateGetTime,
- "getFullYear", DateGetFullYear,
- "getUTCFullYear", DateGetUTCFullYear,
- "getMonth", DateGetMonth,
- "getUTCMonth", DateGetUTCMonth,
- "getDate", DateGetDate,
- "getUTCDate", DateGetUTCDate,
- "getDay", DateGetDay,
- "getUTCDay", DateGetUTCDay,
- "getHours", DateGetHours,
- "getUTCHours", DateGetUTCHours,
- "getMinutes", DateGetMinutes,
- "getUTCMinutes", DateGetUTCMinutes,
- "getSeconds", DateGetSeconds,
- "getUTCSeconds", DateGetUTCSeconds,
- "getMilliseconds", DateGetMilliseconds,
- "getUTCMilliseconds", DateGetUTCMilliseconds,
- "getTimezoneOffset", DateGetTimezoneOffset,
- "setTime", DateSetTime,
- "setMilliseconds", DateSetMilliseconds,
- "setUTCMilliseconds", DateSetUTCMilliseconds,
- "setSeconds", DateSetSeconds,
- "setUTCSeconds", DateSetUTCSeconds,
- "setMinutes", DateSetMinutes,
- "setUTCMinutes", DateSetUTCMinutes,
- "setHours", DateSetHours,
- "setUTCHours", DateSetUTCHours,
- "setDate", DateSetDate,
- "setUTCDate", DateSetUTCDate,
- "setMonth", DateSetMonth,
- "setUTCMonth", DateSetUTCMonth,
- "setFullYear", DateSetFullYear,
- "setUTCFullYear", DateSetUTCFullYear,
- "toGMTString", DateToGMTString,
- "toUTCString", DateToUTCString,
- "getYear", DateGetYear,
- "setYear", DateSetYear,
- "toISOString", DateToISOString,
- "toJSON", DateToJSON
-]);
-
-%InstallToContext(["create_date_fun", CreateDate]);
-
-})
« no previous file with comments | « src/d8.gyp ('k') | src/generator.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698