Index: src/date.js |
diff --git a/src/date.js b/src/date.js |
index 3d494a136466dcf974cea107bf6b92ff82dda9c7..dbf494788413f60cb4c321b57c6c6672d3e3ea49 100644 |
--- a/src/date.js |
+++ b/src/date.js |
@@ -202,6 +202,7 @@ function TwoDigitString(value) { |
function DateString(date) { |
+ CHECK_DATE(date); |
return WeekDays[LOCAL_WEEKDAY(date)] + ' ' |
+ Months[LOCAL_MONTH(date)] + ' ' |
+ TwoDigitString(LOCAL_DAY(date)) + ' ' |
@@ -216,6 +217,7 @@ var LongMonths = ['January', 'February', 'March', 'April', 'May', 'June', |
function LongDateString(date) { |
+ CHECK_DATE(date); |
return LongWeekDays[LOCAL_WEEKDAY(date)] + ', ' |
+ LongMonths[LOCAL_MONTH(date)] + ' ' |
+ TwoDigitString(LOCAL_DAY(date)) + ', ' |
@@ -224,6 +226,7 @@ function LongDateString(date) { |
function TimeString(date) { |
+ CHECK_DATE(date); |
return TwoDigitString(LOCAL_HOUR(date)) + ':' |
+ TwoDigitString(LOCAL_MIN(date)) + ':' |
+ TwoDigitString(LOCAL_SEC(date)); |
@@ -231,6 +234,7 @@ function TimeString(date) { |
function TimeStringUTC(date) { |
+ CHECK_DATE(date); |
return TwoDigitString(UTC_HOUR(date)) + ':' |
+ TwoDigitString(UTC_MIN(date)) + ':' |
+ TwoDigitString(UTC_SEC(date)); |
@@ -238,6 +242,7 @@ function TimeStringUTC(date) { |
function LocalTimezoneString(date) { |
+ CHECK_DATE(date); |
var timezone = LocalTimezone(UTC_DATE_VALUE(date)); |
var timezoneOffset = -TIMEZONE_OFFSET(date); |
@@ -251,6 +256,7 @@ function LocalTimezoneString(date) { |
function DatePrintString(date) { |
+ CHECK_DATE(date); |
return DateString(date) + ' ' + TimeString(date); |
} |
@@ -303,6 +309,7 @@ function DateNow() { |
// 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) |
@@ -312,6 +319,7 @@ function DateToString() { |
// 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); |
@@ -320,6 +328,7 @@ function DateToDateString() { |
// 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); |
@@ -329,12 +338,14 @@ function DateToTimeString() { |
// 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); |
@@ -343,6 +354,7 @@ function DateToLocaleDateString() { |
// 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); |
@@ -351,114 +363,133 @@ 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); |
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); |
} |
@@ -473,6 +504,7 @@ function DateSetTime(ms) { |
// ECMA 262 - 15.9.5.28 |
function DateSetMilliseconds(ms) { |
+ CHECK_DATE(this); |
var t = LOCAL_DATE_VALUE(this); |
ms = $toNumber(ms); |
var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); |
@@ -482,6 +514,7 @@ function DateSetMilliseconds(ms) { |
// ECMA 262 - 15.9.5.29 |
function DateSetUTCMilliseconds(ms) { |
+ CHECK_DATE(this); |
var t = UTC_DATE_VALUE(this); |
ms = $toNumber(ms); |
var time = MakeTime(UTC_HOUR(this), |
@@ -494,6 +527,7 @@ function DateSetUTCMilliseconds(ms) { |
// ECMA 262 - 15.9.5.30 |
function DateSetSeconds(sec, ms) { |
+ CHECK_DATE(this); |
var t = LOCAL_DATE_VALUE(this); |
sec = $toNumber(sec); |
ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : $toNumber(ms); |
@@ -504,6 +538,7 @@ function DateSetSeconds(sec, ms) { |
// ECMA 262 - 15.9.5.31 |
function DateSetUTCSeconds(sec, ms) { |
+ CHECK_DATE(this); |
var t = UTC_DATE_VALUE(this); |
sec = $toNumber(sec); |
ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : $toNumber(ms); |
@@ -514,6 +549,7 @@ function DateSetUTCSeconds(sec, ms) { |
// ECMA 262 - 15.9.5.33 |
function DateSetMinutes(min, sec, ms) { |
+ CHECK_DATE(this); |
var t = LOCAL_DATE_VALUE(this); |
min = $toNumber(min); |
var argc = %_ArgumentsLength(); |
@@ -526,6 +562,7 @@ function DateSetMinutes(min, sec, ms) { |
// ECMA 262 - 15.9.5.34 |
function DateSetUTCMinutes(min, sec, ms) { |
+ CHECK_DATE(this); |
var t = UTC_DATE_VALUE(this); |
min = $toNumber(min); |
var argc = %_ArgumentsLength(); |
@@ -538,6 +575,7 @@ function DateSetUTCMinutes(min, sec, ms) { |
// ECMA 262 - 15.9.5.35 |
function DateSetHours(hour, min, sec, ms) { |
+ CHECK_DATE(this); |
var t = LOCAL_DATE_VALUE(this); |
hour = $toNumber(hour); |
var argc = %_ArgumentsLength(); |
@@ -551,6 +589,7 @@ function DateSetHours(hour, min, sec, ms) { |
// ECMA 262 - 15.9.5.34 |
function DateSetUTCHours(hour, min, sec, ms) { |
+ CHECK_DATE(this); |
var t = UTC_DATE_VALUE(this); |
hour = $toNumber(hour); |
var argc = %_ArgumentsLength(); |
@@ -564,6 +603,7 @@ function DateSetUTCHours(hour, min, sec, ms) { |
// ECMA 262 - 15.9.5.36 |
function DateSetDate(date) { |
+ CHECK_DATE(this); |
var t = LOCAL_DATE_VALUE(this); |
date = $toNumber(date); |
var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); |
@@ -573,6 +613,7 @@ function DateSetDate(date) { |
// ECMA 262 - 15.9.5.37 |
function DateSetUTCDate(date) { |
+ CHECK_DATE(this); |
var t = UTC_DATE_VALUE(this); |
date = $toNumber(date); |
var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); |
@@ -582,6 +623,7 @@ function DateSetUTCDate(date) { |
// ECMA 262 - 15.9.5.38 |
function DateSetMonth(month, date) { |
+ CHECK_DATE(this); |
var t = LOCAL_DATE_VALUE(this); |
month = $toNumber(month); |
date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : $toNumber(date); |
@@ -592,6 +634,7 @@ function DateSetMonth(month, date) { |
// ECMA 262 - 15.9.5.39 |
function DateSetUTCMonth(month, date) { |
+ CHECK_DATE(this); |
var t = UTC_DATE_VALUE(this); |
month = $toNumber(month); |
date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : $toNumber(date); |
@@ -602,6 +645,7 @@ function DateSetUTCMonth(month, date) { |
// ECMA 262 - 15.9.5.40 |
function DateSetFullYear(year, month, date) { |
+ CHECK_DATE(this); |
var t = LOCAL_DATE_VALUE(this); |
year = $toNumber(year); |
var argc = %_ArgumentsLength(); |
@@ -622,6 +666,7 @@ function DateSetFullYear(year, month, date) { |
// ECMA 262 - 15.9.5.41 |
function DateSetUTCFullYear(year, month, date) { |
+ CHECK_DATE(this); |
var t = UTC_DATE_VALUE(this); |
year = $toNumber(year); |
var argc = %_ArgumentsLength(); |
@@ -642,6 +687,7 @@ function DateSetUTCFullYear(year, month, date) { |
// 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 |
@@ -655,6 +701,7 @@ function DateToUTCString() { |
// ECMA 262 - B.2.4 |
function DateGetYear() { |
+ CHECK_DATE(this); |
return LOCAL_YEAR(this) - 1900; |
} |
@@ -702,6 +749,7 @@ function PadInt(n, digits) { |
// ECMA 262 - 15.9.5.43 |
function DateToISOString() { |
+ CHECK_DATE(this); |
var t = UTC_DATE_VALUE(this); |
if (NUMBER_IS_NAN(t)) throw MakeRangeError(kInvalidTimeValue); |
var year = this.getUTCFullYear(); |