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

Unified Diff: src/date.js

Issue 1167813003: [date] Refactor the %_DateField intrinsic to be optimizable. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Address comments. Created 5 years, 7 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/compiler/linkage.cc ('k') | src/deoptimizer.h » ('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
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();
« no previous file with comments | « src/compiler/linkage.cc ('k') | src/deoptimizer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698