Index: src/builtins.cc |
diff --git a/src/builtins.cc b/src/builtins.cc |
index dcb4f2307e1c1da77eeb643332f51687d974074a..17548e0fd8bdace0e131a6c223f87bc6343de0e1 100644 |
--- a/src/builtins.cc |
+++ b/src/builtins.cc |
@@ -2122,55 +2122,25 @@ |
} |
-enum ToDateStringMode { kDateOnly, kTimeOnly, kDateAndTime }; |
- |
- |
// ES6 section 20.3.4.41.1 ToDateString(tv) |
-void ToDateString(double time_val, Vector<char> str, DateCache* date_cache, |
- ToDateStringMode mode = kDateAndTime) { |
+void ToDateString(double time_val, Vector<char> str, DateCache* date_cache) { |
if (std::isnan(time_val)) { |
SNPrintF(str, "Invalid Date"); |
- return; |
- } |
- int64_t time_ms = static_cast<int64_t>(time_val); |
- int64_t local_time_ms = date_cache->ToLocal(time_ms); |
- int year, month, day, weekday, hour, min, sec, ms; |
- date_cache->BreakDownTime(local_time_ms, &year, &month, &day, &weekday, &hour, |
- &min, &sec, &ms); |
- int timezone_offset = -date_cache->TimezoneOffset(time_ms); |
- int timezone_hour = std::abs(timezone_offset) / 60; |
- int timezone_min = std::abs(timezone_offset) % 60; |
- const char* local_timezone = date_cache->LocalTimezone(time_ms); |
- switch (mode) { |
- case kDateOnly: |
- SNPrintF(str, "%s %s %02d %4d", kShortWeekDays[weekday], |
- kShortMonths[month], day, year); |
- return; |
- case kTimeOnly: |
- SNPrintF(str, "%02d:%02d:%02d GMT%c%02d%02d (%s)", hour, min, sec, |
- (timezone_offset < 0) ? '-' : '+', timezone_hour, timezone_min, |
- local_timezone); |
- return; |
- case kDateAndTime: |
- SNPrintF(str, "%s %s %02d %4d %02d:%02d:%02d GMT%c%02d%02d (%s)", |
- kShortWeekDays[weekday], kShortMonths[month], day, year, hour, |
- min, sec, (timezone_offset < 0) ? '-' : '+', timezone_hour, |
- timezone_min, local_timezone); |
- return; |
- } |
- UNREACHABLE(); |
-} |
- |
- |
-Object* SetLocalDateValue(Handle<JSDate> date, double time_val) { |
- if (time_val >= -DateCache::kMaxTimeBeforeUTCInMs && |
- time_val <= DateCache::kMaxTimeBeforeUTCInMs) { |
- Isolate* const isolate = date->GetIsolate(); |
- time_val = isolate->date_cache()->ToUTC(static_cast<int64_t>(time_val)); |
} else { |
- time_val = std::numeric_limits<double>::quiet_NaN(); |
- } |
- return *JSDate::SetValue(date, TimeClip(time_val)); |
+ int64_t time_ms = static_cast<int64_t>(time_val); |
+ int64_t local_time_ms = date_cache->ToLocal(time_ms); |
+ int year, month, day, weekday, hour, min, sec, ms; |
+ date_cache->BreakDownTime(local_time_ms, &year, &month, &day, &weekday, |
+ &hour, &min, &sec, &ms); |
+ int timezone_offset = -date_cache->TimezoneOffset(time_ms); |
+ int timezone_hour = std::abs(timezone_offset) / 60; |
+ int timezone_min = std::abs(timezone_offset) % 60; |
+ const char* local_timezone = date_cache->LocalTimezone(time_ms); |
+ SNPrintF(str, "%s %s %02d %4d %02d:%02d:%02d GMT%c%02d%02d (%s)", |
+ kShortWeekDays[weekday], kShortMonths[month], day, year, hour, min, |
+ sec, (timezone_offset < 0) ? '-' : '+', timezone_hour, |
+ timezone_min, local_timezone); |
+ } |
} |
} // namespace |
@@ -2350,423 +2320,6 @@ |
} |
-// ES6 section 20.3.4.20 Date.prototype.setDate ( date ) |
-BUILTIN(DatePrototypeSetDate) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setDate"); |
- Handle<Object> value = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, value, Object::ToNumber(value)); |
- double time_val = date->value()->Number(); |
- if (!std::isnan(time_val)) { |
- int64_t const time_ms = static_cast<int64_t>(time_val); |
- int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms); |
- int const days = isolate->date_cache()->DaysFromTime(local_time_ms); |
- int time_within_day = isolate->date_cache()->TimeInDay(local_time_ms, days); |
- int year, month, day; |
- isolate->date_cache()->YearMonthDayFromDays(days, &year, &month, &day); |
- time_val = MakeDate(MakeDay(year, month, value->Number()), time_within_day); |
- } |
- return SetLocalDateValue(date, time_val); |
-} |
- |
- |
-// ES6 section 20.3.4.21 Date.prototype.setFullYear (year, month, date) |
-BUILTIN(DatePrototypeSetFullYear) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setFullYear"); |
- int const argc = args.length() - 1; |
- Handle<Object> year = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, year, Object::ToNumber(year)); |
- double y = year->Number(), m = 0.0, dt = 1.0; |
- int time_within_day = 0; |
- if (!std::isnan(date->value()->Number())) { |
- int64_t const time_ms = static_cast<int64_t>(date->value()->Number()); |
- int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms); |
- int const days = isolate->date_cache()->DaysFromTime(local_time_ms); |
- time_within_day = isolate->date_cache()->TimeInDay(local_time_ms, days); |
- int year, month, day; |
- isolate->date_cache()->YearMonthDayFromDays(days, &year, &month, &day); |
- m = month; |
- dt = day; |
- } |
- if (argc >= 2) { |
- Handle<Object> month = args.at<Object>(2); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, month, Object::ToNumber(month)); |
- m = month->Number(); |
- if (argc >= 3) { |
- Handle<Object> date = args.at<Object>(3); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, date, Object::ToNumber(date)); |
- dt = date->Number(); |
- } |
- } |
- double time_val = MakeDate(MakeDay(y, m, dt), time_within_day); |
- return SetLocalDateValue(date, time_val); |
-} |
- |
- |
-// ES6 section 20.3.4.22 Date.prototype.setHours(hour, min, sec, ms) |
-BUILTIN(DatePrototypeSetHours) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setHours"); |
- int const argc = args.length() - 1; |
- Handle<Object> hour = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, hour, Object::ToNumber(hour)); |
- double h = hour->Number(); |
- double time_val = date->value()->Number(); |
- if (!std::isnan(time_val)) { |
- int64_t const time_ms = static_cast<int64_t>(time_val); |
- int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms); |
- int day = isolate->date_cache()->DaysFromTime(local_time_ms); |
- int time_within_day = isolate->date_cache()->TimeInDay(local_time_ms, day); |
- double m = (time_within_day / (60 * 1000)) % 60; |
- double s = (time_within_day / 1000) % 60; |
- double milli = time_within_day % 1000; |
- if (argc >= 2) { |
- Handle<Object> min = args.at<Object>(2); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, min, Object::ToNumber(min)); |
- m = min->Number(); |
- if (argc >= 3) { |
- Handle<Object> sec = args.at<Object>(3); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, sec, Object::ToNumber(sec)); |
- s = sec->Number(); |
- if (argc >= 4) { |
- Handle<Object> ms = args.at<Object>(4); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, ms, Object::ToNumber(ms)); |
- milli = ms->Number(); |
- } |
- } |
- } |
- time_val = MakeDate(day, MakeTime(h, m, s, milli)); |
- } |
- return SetLocalDateValue(date, time_val); |
-} |
- |
- |
-// ES6 section 20.3.4.23 Date.prototype.setMilliseconds(ms) |
-BUILTIN(DatePrototypeSetMilliseconds) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setMilliseconds"); |
- Handle<Object> ms = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, ms, Object::ToNumber(ms)); |
- double time_val = date->value()->Number(); |
- if (!std::isnan(time_val)) { |
- int64_t const time_ms = static_cast<int64_t>(time_val); |
- int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms); |
- int day = isolate->date_cache()->DaysFromTime(local_time_ms); |
- int time_within_day = isolate->date_cache()->TimeInDay(local_time_ms, day); |
- int h = time_within_day / (60 * 60 * 1000); |
- int m = (time_within_day / (60 * 1000)) % 60; |
- int s = (time_within_day / 1000) % 60; |
- time_val = MakeDate(day, MakeTime(h, m, s, ms->Number())); |
- } |
- return SetLocalDateValue(date, time_val); |
-} |
- |
- |
-// ES6 section 20.3.4.24 Date.prototype.setMinutes ( min, sec, ms ) |
-BUILTIN(DatePrototypeSetMinutes) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setMinutes"); |
- int const argc = args.length() - 1; |
- Handle<Object> min = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, min, Object::ToNumber(min)); |
- double time_val = date->value()->Number(); |
- if (!std::isnan(time_val)) { |
- int64_t const time_ms = static_cast<int64_t>(time_val); |
- int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms); |
- int day = isolate->date_cache()->DaysFromTime(local_time_ms); |
- int time_within_day = isolate->date_cache()->TimeInDay(local_time_ms, day); |
- int h = time_within_day / (60 * 60 * 1000); |
- double m = min->Number(); |
- double s = (time_within_day / 1000) % 60; |
- double milli = time_within_day % 1000; |
- if (argc >= 2) { |
- Handle<Object> sec = args.at<Object>(2); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, sec, Object::ToNumber(sec)); |
- s = sec->Number(); |
- if (argc >= 3) { |
- Handle<Object> ms = args.at<Object>(3); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, ms, Object::ToNumber(ms)); |
- milli = ms->Number(); |
- } |
- } |
- time_val = MakeDate(day, MakeTime(h, m, s, milli)); |
- } |
- return SetLocalDateValue(date, time_val); |
-} |
- |
- |
-// ES6 section 20.3.4.25 Date.prototype.setMonth ( month, date ) |
-BUILTIN(DatePrototypeSetMonth) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setMonth"); |
- int const argc = args.length() - 1; |
- Handle<Object> month = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, month, Object::ToNumber(month)); |
- double time_val = date->value()->Number(); |
- if (!std::isnan(time_val)) { |
- int64_t const time_ms = static_cast<int64_t>(time_val); |
- int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms); |
- int days = isolate->date_cache()->DaysFromTime(local_time_ms); |
- int time_within_day = isolate->date_cache()->TimeInDay(local_time_ms, days); |
- int year, unused, day; |
- isolate->date_cache()->YearMonthDayFromDays(days, &year, &unused, &day); |
- double m = month->Number(); |
- double dt = day; |
- if (argc >= 2) { |
- Handle<Object> date = args.at<Object>(2); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, date, Object::ToNumber(date)); |
- dt = date->Number(); |
- } |
- time_val = MakeDate(MakeDay(year, m, dt), time_within_day); |
- } |
- return SetLocalDateValue(date, time_val); |
-} |
- |
- |
-// ES6 section 20.3.4.26 Date.prototype.setSeconds ( sec, ms ) |
-BUILTIN(DatePrototypeSetSeconds) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setSeconds"); |
- int const argc = args.length() - 1; |
- Handle<Object> sec = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, sec, Object::ToNumber(sec)); |
- double time_val = date->value()->Number(); |
- if (!std::isnan(time_val)) { |
- int64_t const time_ms = static_cast<int64_t>(time_val); |
- int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms); |
- int day = isolate->date_cache()->DaysFromTime(local_time_ms); |
- int time_within_day = isolate->date_cache()->TimeInDay(local_time_ms, day); |
- int h = time_within_day / (60 * 60 * 1000); |
- double m = (time_within_day / (60 * 1000)) % 60; |
- double s = sec->Number(); |
- double milli = time_within_day % 1000; |
- if (argc >= 2) { |
- Handle<Object> ms = args.at<Object>(2); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, ms, Object::ToNumber(ms)); |
- milli = ms->Number(); |
- } |
- time_val = MakeDate(day, MakeTime(h, m, s, milli)); |
- } |
- return SetLocalDateValue(date, time_val); |
-} |
- |
- |
-// ES6 section 20.3.4.27 Date.prototype.setTime ( time ) |
-BUILTIN(DatePrototypeSetTime) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setTime"); |
- Handle<Object> value = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, value, Object::ToNumber(value)); |
- return *JSDate::SetValue(date, TimeClip(value->Number())); |
-} |
- |
- |
-// ES6 section 20.3.4.28 Date.prototype.setUTCDate ( date ) |
-BUILTIN(DatePrototypeSetUTCDate) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setUTCDate"); |
- Handle<Object> value = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, value, Object::ToNumber(value)); |
- if (std::isnan(date->value()->Number())) return date->value(); |
- int64_t const time_ms = static_cast<int64_t>(date->value()->Number()); |
- int const days = isolate->date_cache()->DaysFromTime(time_ms); |
- int const time_within_day = isolate->date_cache()->TimeInDay(time_ms, days); |
- int year, month, day; |
- isolate->date_cache()->YearMonthDayFromDays(days, &year, &month, &day); |
- double const time_val = |
- MakeDate(MakeDay(year, month, value->Number()), time_within_day); |
- return *JSDate::SetValue(date, TimeClip(time_val)); |
-} |
- |
- |
-// ES6 section 20.3.4.29 Date.prototype.setUTCFullYear (year, month, date) |
-BUILTIN(DatePrototypeSetUTCFullYear) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setUTCFullYear"); |
- int const argc = args.length() - 1; |
- Handle<Object> year = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, year, Object::ToNumber(year)); |
- double y = year->Number(), m = 0.0, dt = 1.0; |
- int time_within_day = 0; |
- if (!std::isnan(date->value()->Number())) { |
- int64_t const time_ms = static_cast<int64_t>(date->value()->Number()); |
- int const days = isolate->date_cache()->DaysFromTime(time_ms); |
- time_within_day = isolate->date_cache()->TimeInDay(time_ms, days); |
- int year, month, day; |
- isolate->date_cache()->YearMonthDayFromDays(days, &year, &month, &day); |
- m = month; |
- dt = day; |
- } |
- if (argc >= 2) { |
- Handle<Object> month = args.at<Object>(2); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, month, Object::ToNumber(month)); |
- m = month->Number(); |
- if (argc >= 3) { |
- Handle<Object> date = args.at<Object>(3); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, date, Object::ToNumber(date)); |
- dt = date->Number(); |
- } |
- } |
- double const time_val = MakeDate(MakeDay(y, m, dt), time_within_day); |
- return *JSDate::SetValue(date, TimeClip(time_val)); |
-} |
- |
- |
-// ES6 section 20.3.4.30 Date.prototype.setUTCHours(hour, min, sec, ms) |
-BUILTIN(DatePrototypeSetUTCHours) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setUTCHours"); |
- int const argc = args.length() - 1; |
- Handle<Object> hour = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, hour, Object::ToNumber(hour)); |
- double h = hour->Number(); |
- double time_val = date->value()->Number(); |
- if (!std::isnan(time_val)) { |
- int64_t const time_ms = static_cast<int64_t>(time_val); |
- int day = isolate->date_cache()->DaysFromTime(time_ms); |
- int time_within_day = isolate->date_cache()->TimeInDay(time_ms, day); |
- double m = (time_within_day / (60 * 1000)) % 60; |
- double s = (time_within_day / 1000) % 60; |
- double milli = time_within_day % 1000; |
- if (argc >= 2) { |
- Handle<Object> min = args.at<Object>(2); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, min, Object::ToNumber(min)); |
- m = min->Number(); |
- if (argc >= 3) { |
- Handle<Object> sec = args.at<Object>(3); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, sec, Object::ToNumber(sec)); |
- s = sec->Number(); |
- if (argc >= 4) { |
- Handle<Object> ms = args.at<Object>(4); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, ms, Object::ToNumber(ms)); |
- milli = ms->Number(); |
- } |
- } |
- } |
- time_val = MakeDate(day, MakeTime(h, m, s, milli)); |
- } |
- return *JSDate::SetValue(date, TimeClip(time_val)); |
-} |
- |
- |
-// ES6 section 20.3.4.31 Date.prototype.setUTCMilliseconds(ms) |
-BUILTIN(DatePrototypeSetUTCMilliseconds) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setUTCMilliseconds"); |
- Handle<Object> ms = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, ms, Object::ToNumber(ms)); |
- double time_val = date->value()->Number(); |
- if (!std::isnan(time_val)) { |
- int64_t const time_ms = static_cast<int64_t>(time_val); |
- int day = isolate->date_cache()->DaysFromTime(time_ms); |
- int time_within_day = isolate->date_cache()->TimeInDay(time_ms, day); |
- int h = time_within_day / (60 * 60 * 1000); |
- int m = (time_within_day / (60 * 1000)) % 60; |
- int s = (time_within_day / 1000) % 60; |
- time_val = MakeDate(day, MakeTime(h, m, s, ms->Number())); |
- } |
- return *JSDate::SetValue(date, TimeClip(time_val)); |
-} |
- |
- |
-// ES6 section 20.3.4.32 Date.prototype.setUTCMinutes ( min, sec, ms ) |
-BUILTIN(DatePrototypeSetUTCMinutes) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setUTCMinutes"); |
- int const argc = args.length() - 1; |
- Handle<Object> min = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, min, Object::ToNumber(min)); |
- double time_val = date->value()->Number(); |
- if (!std::isnan(time_val)) { |
- int64_t const time_ms = static_cast<int64_t>(time_val); |
- int day = isolate->date_cache()->DaysFromTime(time_ms); |
- int time_within_day = isolate->date_cache()->TimeInDay(time_ms, day); |
- int h = time_within_day / (60 * 60 * 1000); |
- double m = min->Number(); |
- double s = (time_within_day / 1000) % 60; |
- double milli = time_within_day % 1000; |
- if (argc >= 2) { |
- Handle<Object> sec = args.at<Object>(2); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, sec, Object::ToNumber(sec)); |
- s = sec->Number(); |
- if (argc >= 3) { |
- Handle<Object> ms = args.at<Object>(3); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, ms, Object::ToNumber(ms)); |
- milli = ms->Number(); |
- } |
- } |
- time_val = MakeDate(day, MakeTime(h, m, s, milli)); |
- } |
- return *JSDate::SetValue(date, TimeClip(time_val)); |
-} |
- |
- |
-// ES6 section 20.3.4.31 Date.prototype.setUTCMonth ( month, date ) |
-BUILTIN(DatePrototypeSetUTCMonth) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setUTCMonth"); |
- int const argc = args.length() - 1; |
- Handle<Object> month = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, month, Object::ToNumber(month)); |
- double time_val = date->value()->Number(); |
- if (!std::isnan(time_val)) { |
- int64_t const time_ms = static_cast<int64_t>(time_val); |
- int days = isolate->date_cache()->DaysFromTime(time_ms); |
- int time_within_day = isolate->date_cache()->TimeInDay(time_ms, days); |
- int year, unused, day; |
- isolate->date_cache()->YearMonthDayFromDays(days, &year, &unused, &day); |
- double m = month->Number(); |
- double dt = day; |
- if (argc >= 2) { |
- Handle<Object> date = args.at<Object>(2); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, date, Object::ToNumber(date)); |
- dt = date->Number(); |
- } |
- time_val = MakeDate(MakeDay(year, m, dt), time_within_day); |
- } |
- return *JSDate::SetValue(date, TimeClip(time_val)); |
-} |
- |
- |
-// ES6 section 20.3.4.34 Date.prototype.setUTCSeconds ( sec, ms ) |
-BUILTIN(DatePrototypeSetUTCSeconds) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setUTCSeconds"); |
- int const argc = args.length() - 1; |
- Handle<Object> sec = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, sec, Object::ToNumber(sec)); |
- double time_val = date->value()->Number(); |
- if (!std::isnan(time_val)) { |
- int64_t const time_ms = static_cast<int64_t>(time_val); |
- int day = isolate->date_cache()->DaysFromTime(time_ms); |
- int time_within_day = isolate->date_cache()->TimeInDay(time_ms, day); |
- int h = time_within_day / (60 * 60 * 1000); |
- double m = (time_within_day / (60 * 1000)) % 60; |
- double s = sec->Number(); |
- double milli = time_within_day % 1000; |
- if (argc >= 2) { |
- Handle<Object> ms = args.at<Object>(2); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, ms, Object::ToNumber(ms)); |
- milli = ms->Number(); |
- } |
- time_val = MakeDate(day, MakeTime(h, m, s, milli)); |
- } |
- return *JSDate::SetValue(date, TimeClip(time_val)); |
-} |
- |
- |
-// ES6 section 20.3.4.35 Date.prototype.toDateString ( ) |
-BUILTIN(DatePrototypeToDateString) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.toDateString"); |
- char buffer[128]; |
- Vector<char> str(buffer, arraysize(buffer)); |
- ToDateString(date->value()->Number(), str, isolate->date_cache(), kDateOnly); |
- return *isolate->factory()->NewStringFromAsciiChecked(str.start()); |
-} |
- |
- |
// ES6 section 20.3.4.36 Date.prototype.toISOString ( ) |
BUILTIN(DatePrototypeToISOString) { |
HandleScope scope(isolate); |
@@ -2796,48 +2349,6 @@ |
} |
-// ES6 section 20.3.4.41 Date.prototype.toString ( ) |
-BUILTIN(DatePrototypeToString) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.toString"); |
- char buffer[128]; |
- Vector<char> str(buffer, arraysize(buffer)); |
- ToDateString(date->value()->Number(), str, isolate->date_cache()); |
- return *isolate->factory()->NewStringFromAsciiChecked(str.start()); |
-} |
- |
- |
-// ES6 section 20.3.4.42 Date.prototype.toTimeString ( ) |
-BUILTIN(DatePrototypeToTimeString) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.toTimeString"); |
- char buffer[128]; |
- Vector<char> str(buffer, arraysize(buffer)); |
- ToDateString(date->value()->Number(), str, isolate->date_cache(), kTimeOnly); |
- return *isolate->factory()->NewStringFromAsciiChecked(str.start()); |
-} |
- |
- |
-// ES6 section 20.3.4.43 Date.prototype.toUTCString ( ) |
-BUILTIN(DatePrototypeToUTCString) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.toUTCString"); |
- double const time_val = date->value()->Number(); |
- if (std::isnan(time_val)) { |
- return *isolate->factory()->NewStringFromAsciiChecked("Invalid Date"); |
- } |
- char buffer[128]; |
- Vector<char> str(buffer, arraysize(buffer)); |
- int64_t time_ms = static_cast<int64_t>(time_val); |
- int year, month, day, weekday, hour, min, sec, ms; |
- isolate->date_cache()->BreakDownTime(time_ms, &year, &month, &day, &weekday, |
- &hour, &min, &sec, &ms); |
- SNPrintF(str, "%s, %02d %s %4d %02d:%02d:%02d GMT", kShortWeekDays[weekday], |
- day, kShortMonths[month], year, hour, min, sec); |
- return *isolate->factory()->NewStringFromAsciiChecked(str.start()); |
-} |
- |
- |
// ES6 section 20.3.4.44 Date.prototype.valueOf ( ) |
BUILTIN(DatePrototypeValueOf) { |
HandleScope scope(isolate); |
@@ -2856,47 +2367,6 @@ |
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, |
JSDate::ToPrimitive(receiver, hint)); |
return *result; |
-} |
- |
- |
-// ES6 section B.2.4.1 Date.prototype.getYear ( ) |
-BUILTIN(DatePrototypeGetYear) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.getYear"); |
- double time_val = date->value()->Number(); |
- if (std::isnan(time_val)) return date->value(); |
- int64_t time_ms = static_cast<int64_t>(time_val); |
- int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms); |
- int days = isolate->date_cache()->DaysFromTime(local_time_ms); |
- int year, month, day; |
- isolate->date_cache()->YearMonthDayFromDays(days, &year, &month, &day); |
- return Smi::FromInt(year - 1900); |
-} |
- |
- |
-// ES6 section B.2.4.2 Date.prototype.setYear ( year ) |
-BUILTIN(DatePrototypeSetYear) { |
- HandleScope scope(isolate); |
- CHECK_RECEIVER(JSDate, date, "Date.prototype.setYear"); |
- Handle<Object> year = args.atOrUndefined(isolate, 1); |
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, year, Object::ToNumber(year)); |
- double m = 0.0, dt = 1.0, y = year->Number(); |
- if (0.0 <= y && y <= 99.0) { |
- y = 1900.0 + DoubleToInteger(y); |
- } |
- int time_within_day = 0; |
- if (!std::isnan(date->value()->Number())) { |
- int64_t const time_ms = static_cast<int64_t>(date->value()->Number()); |
- int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms); |
- int const days = isolate->date_cache()->DaysFromTime(local_time_ms); |
- time_within_day = isolate->date_cache()->TimeInDay(local_time_ms, days); |
- int year, month, day; |
- isolate->date_cache()->YearMonthDayFromDays(days, &year, &month, &day); |
- m = month; |
- dt = day; |
- } |
- double time_val = MakeDate(MakeDay(y, m, dt), time_within_day); |
- return SetLocalDateValue(date, time_val); |
} |