From 77e713f5337adcbd082ce14af906595a7c8a8c71 Mon Sep 17 00:00:00 2001 From: Frank Tang Date: Thu, 7 Oct 2021 14:22:29 -0700 Subject: [PATCH] Reland "[Temporal] Part 1 - Skeleton" This is a reland of 0adc1410b1dae42b135b613ed86c18edafc83e3a 1. Fork out test/mjsunit/temporal/function-exist.js test to test/mjsunit/temporal/function-exist-no-i18n.js and mark function-exist FAIL in no_i18n build. Original change's description: > [Temporal] Part 1 - Skeleton > > 1. Expose all the functions to empty buildins. > 2. Wire up basic structure of classes and internal slots. > > Design Doc: https://docs.google.com/document/d/1Huu2OUlmveBh4wjgx0D7ouC9O9vSdiZWaRK3OwkQZU0/ > > This is just a CL to establish a skeleton for Temporal. > The Temporal is very big. The prototype CL is in > https://chromium-review.googlesource.com/c/v8/v8/+/2967755 > but too big to be reviewed so I break up the basic structure here first. > > Cq-Include-Trybots: luci.v8.try:v8_linux64_bazel > Bug: v8:11544 > Change-Id: I10d09e3c2530e5b1a6ba60014a2294e138879ff3 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3092561 > Reviewed-by: Nico Hartmann > Reviewed-by: Shu-yu Guo > Reviewed-by: Jakob Gruber > Commit-Queue: Frank Tang > Cr-Commit-Position: refs/heads/main@{#76819} Bug: v8:11544 Change-Id: I60eaface94ba9b3408cb235cd1ae425151a36732 Cq-Include-Trybots: luci.v8.try:v8_linux64_bazel Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3160324 Reviewed-by: Nico Hartmann Reviewed-by: Jakob Gruber Cr-Commit-Position: refs/heads/main@{#77303} --- BUILD.bazel | 4 + BUILD.gn | 4 + src/builtins/builtins-definitions.h | 613 ++++++++++++++++- src/builtins/builtins-temporal.cc | 631 ++++++++++++++++++ src/compiler/types.cc | 10 + src/diagnostics/objects-debug.cc | 1 + src/diagnostics/objects-printer.cc | 49 ++ src/flags/flag-definitions.h | 3 +- src/init/bootstrapper.cc | 630 +++++++++++++++++ src/init/heap-symbols.h | 521 ++++++++------- src/objects/all-objects-inl.h | 1 + src/objects/contexts.h | 19 + src/objects/js-function.cc | 10 + src/objects/js-objects.cc | 21 + src/objects/js-temporal-objects-inl.h | 103 +++ src/objects/js-temporal-objects.h | 163 +++++ src/objects/js-temporal-objects.tq | 89 +++ src/objects/map.cc | 10 + src/objects/object-list-macros.h | 10 + src/objects/objects-body-descriptors-inl.h | 10 + src/objects/objects.h | 10 + src/torque/implementation-visitor.cc | 1 + test/mjsunit/mjsunit.status | 3 + .../temporal/function-exist-no-intl.js | 329 +++++++++ test/mjsunit/temporal/function-exist.js | 338 ++++++++++ tools/v8heapconst.py | 148 ++-- 26 files changed, 3428 insertions(+), 303 deletions(-) create mode 100644 src/builtins/builtins-temporal.cc create mode 100644 src/objects/js-temporal-objects-inl.h create mode 100644 src/objects/js-temporal-objects.h create mode 100644 src/objects/js-temporal-objects.tq create mode 100644 test/mjsunit/temporal/function-exist-no-intl.js create mode 100644 test/mjsunit/temporal/function-exist.js diff --git a/BUILD.bazel b/BUILD.bazel index 23bce0f4bd..3e53312aa0 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -805,6 +805,7 @@ filegroup( "src/objects/js-proxy.tq", "src/objects/js-regexp-string-iterator.tq", "src/objects/js-regexp.tq", + "src/objects/js-temporal-objects.tq", "src/objects/js-weak-refs.tq", "src/objects/literal-objects.tq", "src/objects/map.tq", @@ -999,6 +1000,7 @@ filegroup( "src/builtins/builtins-sharedarraybuffer.cc", "src/builtins/builtins-string.cc", "src/builtins/builtins-symbol.cc", + "src/builtins/builtins-temporal.cc", "src/builtins/builtins-trace.cc", "src/builtins/builtins-typed-array.cc", "src/builtins/builtins-utils-inl.h", @@ -1577,6 +1579,8 @@ filegroup( "src/objects/js-regexp-string-iterator.h", "src/objects/js-regexp.cc", "src/objects/js-regexp.h", + "src/objects/js-temporal-objects.h", + "src/objects/js-temporal-objects-inl.h", "src/objects/js-weak-refs.h", "src/objects/js-weak-refs-inl.h", "src/objects/keys.cc", diff --git a/BUILD.gn b/BUILD.gn index d33a2d70b8..964b79632b 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -1745,6 +1745,7 @@ torque_files = [ "src/objects/js-proxy.tq", "src/objects/js-regexp-string-iterator.tq", "src/objects/js-regexp.tq", + "src/objects/js-temporal-objects.tq", "src/objects/js-weak-refs.tq", "src/objects/literal-objects.tq", "src/objects/map.tq", @@ -3142,6 +3143,8 @@ v8_header_set("v8_internal_headers") { "src/objects/js-regexp.h", "src/objects/js-segments-inl.h", "src/objects/js-segments.h", + "src/objects/js-temporal-objects-inl.h", + "src/objects/js-temporal-objects.h", "src/objects/js-weak-refs-inl.h", "src/objects/js-weak-refs.h", "src/objects/keys.h", @@ -3993,6 +3996,7 @@ v8_source_set("v8_base_without_compiler") { "src/builtins/builtins-sharedarraybuffer.cc", "src/builtins/builtins-string.cc", "src/builtins/builtins-symbol.cc", + "src/builtins/builtins-temporal.cc", "src/builtins/builtins-trace.cc", "src/builtins/builtins-typed-array.cc", "src/builtins/builtins-weak-refs.cc", diff --git a/src/builtins/builtins-definitions.h b/src/builtins/builtins-definitions.h index f7b94c4059..3268914d53 100644 --- a/src/builtins/builtins-definitions.h +++ b/src/builtins/builtins-definitions.h @@ -1044,7 +1044,579 @@ namespace internal { \ /* CallAsyncModule* are spec anonymyous functions */ \ CPP(CallAsyncModuleFulfilled) \ - CPP(CallAsyncModuleRejected) + CPP(CallAsyncModuleRejected) \ + \ + /* Temporal */ \ + /* Temporal #sec-temporal.now.timezone */ \ + CPP(TemporalNowTimeZone) \ + /* Temporal #sec-temporal.now.instant */ \ + CPP(TemporalNowInstant) \ + /* Temporal #sec-temporal.now.plaindatetime */ \ + CPP(TemporalNowPlainDateTime) \ + /* Temporal #sec-temporal.now.plaindatetimeiso */ \ + CPP(TemporalNowPlainDateTimeISO) \ + /* Temporal #sec-temporal.now.zoneddatetime */ \ + CPP(TemporalNowZonedDateTime) \ + /* Temporal #sec-temporal.now.zoneddatetimeiso */ \ + CPP(TemporalNowZonedDateTimeISO) \ + /* Temporal #sec-temporal.now.plaindate */ \ + CPP(TemporalNowPlainDate) \ + /* Temporal #sec-temporal.now.plaindateiso */ \ + CPP(TemporalNowPlainDateISO) \ + /* There are no Temporal.now.plainTime */ \ + /* See https://github.com/tc39/proposal-temporal/issues/1540 */ \ + /* Temporal #sec-temporal.now.plaintimeiso */ \ + CPP(TemporalNowPlainTimeISO) \ + \ + /* Temporal.PlaneDate */ \ + /* Temporal #sec-temporal.plaindate */ \ + CPP(TemporalPlainDateConstructor) \ + /* Temporal #sec-temporal.plaindate.from */ \ + CPP(TemporalPlainDateFrom) \ + /* Temporal #sec-temporal.plaindate.compare */ \ + CPP(TemporalPlainDateCompare) \ + /* Temporal #sec-get-temporal.plaindate.prototype.calendar */ \ + CPP(TemporalPlainDatePrototypeCalendar) \ + /* Temporal #sec-get-temporal.plaindate.prototype.year */ \ + CPP(TemporalPlainDatePrototypeYear) \ + /* Temporal #sec-get-temporal.plaindate.prototype.month */ \ + CPP(TemporalPlainDatePrototypeMonth) \ + /* Temporal #sec-get-temporal.plaindate.prototype.monthcode */ \ + CPP(TemporalPlainDatePrototypeMonthCode) \ + /* Temporal #sec-get-temporal.plaindate.prototype.day */ \ + CPP(TemporalPlainDatePrototypeDay) \ + /* Temporal #sec-get-temporal.plaindate.prototype.dayofweek */ \ + CPP(TemporalPlainDatePrototypeDayOfWeek) \ + /* Temporal #sec-get-temporal.plaindate.prototype.dayofyear */ \ + CPP(TemporalPlainDatePrototypeDayOfYear) \ + /* Temporal #sec-get-temporal.plaindate.prototype.weekofyear */ \ + CPP(TemporalPlainDatePrototypeWeekOfYear) \ + /* Temporal #sec-get-temporal.plaindate.prototype.daysinweek */ \ + CPP(TemporalPlainDatePrototypeDaysInWeek) \ + /* Temporal #sec-get-temporal.plaindate.prototype.daysinmonth */ \ + CPP(TemporalPlainDatePrototypeDaysInMonth) \ + /* Temporal #sec-get-temporal.plaindate.prototype.daysinyear */ \ + CPP(TemporalPlainDatePrototypeDaysInYear) \ + /* Temporal #sec-get-temporal.plaindate.prototype.monthsinyear */ \ + CPP(TemporalPlainDatePrototypeMonthsInYear) \ + /* Temporal #sec-get-temporal.plaindate.prototype.inleapyear */ \ + CPP(TemporalPlainDatePrototypeInLeapYear) \ + /* Temporal #sec-temporal.plaindate.prototype.toplainyearmonth */ \ + CPP(TemporalPlainDatePrototypeToPlainYearMonth) \ + /* Temporal #sec-temporal.plaindate.prototype.toplainmonthday */ \ + CPP(TemporalPlainDatePrototypeToPlainMonthDay) \ + /* Temporal #sec-temporal.plaindate.prototype.getisofields */ \ + CPP(TemporalPlainDatePrototypeGetISOFields) \ + /* Temporal #sec-temporal.plaindate.prototype.add */ \ + CPP(TemporalPlainDatePrototypeAdd) \ + /* Temporal #sec-temporal.plaindate.prototype.substract */ \ + CPP(TemporalPlainDatePrototypeSubtract) \ + /* Temporal #sec-temporal.plaindate.prototype.with */ \ + CPP(TemporalPlainDatePrototypeWith) \ + /* Temporal #sec-temporal.plaindate.prototype.withcalendar */ \ + CPP(TemporalPlainDatePrototypeWithCalendar) \ + /* Temporal #sec-temporal.plaindate.prototype.until */ \ + CPP(TemporalPlainDatePrototypeUntil) \ + /* Temporal #sec-temporal.plaindate.prototype.since */ \ + CPP(TemporalPlainDatePrototypeSince) \ + /* Temporal #sec-temporal.plaindate.prototype.equals */ \ + CPP(TemporalPlainDatePrototypeEquals) \ + /* Temporal #sec-temporal.plaindate.prototype.toplaindatetime */ \ + CPP(TemporalPlainDatePrototypeToPlainDateTime) \ + /* Temporal #sec-temporal.plaindate.prototype.tozoneddatetime */ \ + CPP(TemporalPlainDatePrototypeToZonedDateTime) \ + /* Temporal #sec-temporal.plaindate.prototype.tostring */ \ + CPP(TemporalPlainDatePrototypeToString) \ + /* Temporal #sec-temporal.plaindate.prototype.tojson */ \ + CPP(TemporalPlainDatePrototypeToJSON) \ + /* Temporal #sec-temporal.plaindate.prototype.valueof */ \ + CPP(TemporalPlainDatePrototypeValueOf) \ + \ + /* Temporal.PlaneTime */ \ + /* Temporal #sec-temporal.plaintime */ \ + CPP(TemporalPlainTimeConstructor) \ + /* Temporal #sec-temporal.plaintime.from */ \ + CPP(TemporalPlainTimeFrom) \ + /* Temporal #sec-temporal.plaintime.compare */ \ + CPP(TemporalPlainTimeCompare) \ + /* Temporal #sec-get-temporal.plaintime.prototype.calendar */ \ + CPP(TemporalPlainTimePrototypeCalendar) \ + /* Temporal #sec-get-temporal.plaintime.prototype.hour */ \ + CPP(TemporalPlainTimePrototypeHour) \ + /* Temporal #sec-get-temporal.plaintime.prototype.minute */ \ + CPP(TemporalPlainTimePrototypeMinute) \ + /* Temporal #sec-get-temporal.plaintime.prototype.second */ \ + CPP(TemporalPlainTimePrototypeSecond) \ + /* Temporal #sec-get-temporal.plaintime.prototype.millisecond */ \ + CPP(TemporalPlainTimePrototypeMillisecond) \ + /* Temporal #sec-get-temporal.plaintime.prototype.microsecond */ \ + CPP(TemporalPlainTimePrototypeMicrosecond) \ + /* Temporal #sec-get-temporal.plaintime.prototype.nanoseond */ \ + CPP(TemporalPlainTimePrototypeNanosecond) \ + /* Temporal #sec-temporal.plaintime.prototype.add */ \ + CPP(TemporalPlainTimePrototypeAdd) \ + /* Temporal #sec-temporal.plaintime.prototype.subtract */ \ + CPP(TemporalPlainTimePrototypeSubtract) \ + /* Temporal #sec-temporal.plaintime.prototype.with */ \ + CPP(TemporalPlainTimePrototypeWith) \ + /* Temporal #sec-temporal.plaintime.prototype.until */ \ + CPP(TemporalPlainTimePrototypeUntil) \ + /* Temporal #sec-temporal.plaintime.prototype.since */ \ + CPP(TemporalPlainTimePrototypeSince) \ + /* Temporal #sec-temporal.plaintime.prototype.round */ \ + CPP(TemporalPlainTimePrototypeRound) \ + /* Temporal #sec-temporal.plaintime.prototype.equals */ \ + CPP(TemporalPlainTimePrototypeEquals) \ + /* Temporal #sec-temporal.plaintime.prototype.toplaindatetime */ \ + CPP(TemporalPlainTimePrototypeToPlainDateTime) \ + /* Temporal #sec-temporal.plaintime.prototype.tozoneddatetime */ \ + CPP(TemporalPlainTimePrototypeToZonedDateTime) \ + /* Temporal #sec-temporal.plaintime.prototype.getisofields */ \ + CPP(TemporalPlainTimePrototypeGetISOFields) \ + /* Temporal #sec-temporal.plaintime.prototype.tostring */ \ + CPP(TemporalPlainTimePrototypeToString) \ + /* Temporal #sec-temporal.plaindtimeprototype.tojson */ \ + CPP(TemporalPlainTimePrototypeToJSON) \ + /* Temporal #sec-temporal.plaintime.prototype.valueof */ \ + CPP(TemporalPlainTimePrototypeValueOf) \ + \ + /* Temporal.PlaneDateTime */ \ + /* Temporal #sec-temporal.plaindatetime */ \ + CPP(TemporalPlainDateTimeConstructor) \ + /* Temporal #sec-temporal.plaindatetime.from */ \ + CPP(TemporalPlainDateTimeFrom) \ + /* Temporal #sec-temporal.plaindatetime.compare */ \ + CPP(TemporalPlainDateTimeCompare) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.calendar */ \ + CPP(TemporalPlainDateTimePrototypeCalendar) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.year */ \ + CPP(TemporalPlainDateTimePrototypeYear) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.month */ \ + CPP(TemporalPlainDateTimePrototypeMonth) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.monthcode */ \ + CPP(TemporalPlainDateTimePrototypeMonthCode) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.day */ \ + CPP(TemporalPlainDateTimePrototypeDay) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.hour */ \ + CPP(TemporalPlainDateTimePrototypeHour) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.minute */ \ + CPP(TemporalPlainDateTimePrototypeMinute) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.second */ \ + CPP(TemporalPlainDateTimePrototypeSecond) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.millisecond */ \ + CPP(TemporalPlainDateTimePrototypeMillisecond) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.microsecond */ \ + CPP(TemporalPlainDateTimePrototypeMicrosecond) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.nanosecond */ \ + CPP(TemporalPlainDateTimePrototypeNanosecond) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.dayofweek */ \ + CPP(TemporalPlainDateTimePrototypeDayOfWeek) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.dayofyear */ \ + CPP(TemporalPlainDateTimePrototypeDayOfYear) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.weekofyear */ \ + CPP(TemporalPlainDateTimePrototypeWeekOfYear) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.daysinweek */ \ + CPP(TemporalPlainDateTimePrototypeDaysInWeek) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.daysinmonth */ \ + CPP(TemporalPlainDateTimePrototypeDaysInMonth) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.daysinyear */ \ + CPP(TemporalPlainDateTimePrototypeDaysInYear) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.monthsinyear */ \ + CPP(TemporalPlainDateTimePrototypeMonthsInYear) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.inleapyear */ \ + CPP(TemporalPlainDateTimePrototypeInLeapYear) \ + /* Temporal #sec-temporal.plaindatetime.prototype.with */ \ + CPP(TemporalPlainDateTimePrototypeWith) \ + /* Temporal #sec-temporal.plaindatetime.prototype.withplainTime */ \ + CPP(TemporalPlainDateTimePrototypeWithPlainTime) \ + /* Temporal #sec-temporal.plaindatetime.prototype.withplainDate */ \ + CPP(TemporalPlainDateTimePrototypeWithPlainDate) \ + /* Temporal #sec-temporal.plaindatetime.prototype.withcalendar */ \ + CPP(TemporalPlainDateTimePrototypeWithCalendar) \ + /* Temporal #sec-temporal.plaindatetime.prototype.add */ \ + CPP(TemporalPlainDateTimePrototypeAdd) \ + /* Temporal #sec-temporal.plaindatetime.prototype.subtract */ \ + CPP(TemporalPlainDateTimePrototypeSubtract) \ + /* Temporal #sec-temporal.plaindatetime.prototype.until */ \ + CPP(TemporalPlainDateTimePrototypeUntil) \ + /* Temporal #sec-temporal.plaindatetime.prototype.since */ \ + CPP(TemporalPlainDateTimePrototypeSince) \ + /* Temporal #sec-temporal.plaindatetime.prototype.round */ \ + CPP(TemporalPlainDateTimePrototypeRound) \ + /* Temporal #sec-temporal.plaindatetime.prototype.equals */ \ + CPP(TemporalPlainDateTimePrototypeEquals) \ + /* Temporal #sec-temporal.plaindatetime.prototype.tostring */ \ + CPP(TemporalPlainDateTimePrototypeToString) \ + /* Temporal #sec-temporal.plainddatetimeprototype.tojson */ \ + CPP(TemporalPlainDateTimePrototypeToJSON) \ + /* Temporal #sec-temporal.plaindatetime.prototype.valueof */ \ + CPP(TemporalPlainDateTimePrototypeValueOf) \ + /* Temporal #sec-temporal.plaindatetime.prototype.tozoneddatetime */ \ + CPP(TemporalPlainDateTimePrototypeToZonedDateTime) \ + /* Temporal #sec-temporal.plaindatetime.prototype.toplaindate */ \ + CPP(TemporalPlainDateTimePrototypeToPlainDate) \ + /* Temporal #sec-temporal.plaindatetime.prototype.toplainyearmonth */ \ + CPP(TemporalPlainDateTimePrototypeToPlainYearMonth) \ + /* Temporal #sec-temporal.plaindatetime.prototype.toplainmonthday */ \ + CPP(TemporalPlainDateTimePrototypeToPlainMonthDay) \ + /* Temporal #sec-temporal.plaindatetime.prototype.toplaintime */ \ + CPP(TemporalPlainDateTimePrototypeToPlainTime) \ + /* Temporal #sec-temporal.plaindatetime.prototype.getisofields */ \ + CPP(TemporalPlainDateTimePrototypeGetISOFields) \ + \ + /* Temporal.ZonedDateTime */ \ + /* Temporal #sec-temporal.zoneddatetime */ \ + CPP(TemporalZonedDateTimeConstructor) \ + /* Temporal #sec-temporal.zoneddatetime.from */ \ + CPP(TemporalZonedDateTimeFrom) \ + /* Temporal #sec-temporal.zoneddatetime.compare */ \ + CPP(TemporalZonedDateTimeCompare) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.calendar */ \ + CPP(TemporalZonedDateTimePrototypeCalendar) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.timezone */ \ + CPP(TemporalZonedDateTimePrototypeTimeZone) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.year */ \ + CPP(TemporalZonedDateTimePrototypeYear) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.month */ \ + CPP(TemporalZonedDateTimePrototypeMonth) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.monthcode */ \ + CPP(TemporalZonedDateTimePrototypeMonthCode) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.day */ \ + CPP(TemporalZonedDateTimePrototypeDay) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.hour */ \ + CPP(TemporalZonedDateTimePrototypeHour) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.minute */ \ + CPP(TemporalZonedDateTimePrototypeMinute) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.second */ \ + CPP(TemporalZonedDateTimePrototypeSecond) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.millisecond */ \ + CPP(TemporalZonedDateTimePrototypeMillisecond) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.microsecond */ \ + CPP(TemporalZonedDateTimePrototypeMicrosecond) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.nanosecond */ \ + CPP(TemporalZonedDateTimePrototypeNanosecond) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochsecond */ \ + CPP(TemporalZonedDateTimePrototypeEpochSeconds) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochmilliseconds */ \ + CPP(TemporalZonedDateTimePrototypeEpochMilliseconds) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochmicroseconds */ \ + CPP(TemporalZonedDateTimePrototypeEpochMicroseconds) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.epochnanoseconds */ \ + CPP(TemporalZonedDateTimePrototypeEpochNanoseconds) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.dayofweek */ \ + CPP(TemporalZonedDateTimePrototypeDayOfWeek) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.dayofyear */ \ + CPP(TemporalZonedDateTimePrototypeDayOfYear) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.weekofyear */ \ + CPP(TemporalZonedDateTimePrototypeWeekOfYear) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.hoursinday */ \ + CPP(TemporalZonedDateTimePrototypeHoursInDay) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinweek */ \ + CPP(TemporalZonedDateTimePrototypeDaysInWeek) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinmonth */ \ + CPP(TemporalZonedDateTimePrototypeDaysInMonth) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinyear */ \ + CPP(TemporalZonedDateTimePrototypeDaysInYear) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.monthsinyear */ \ + CPP(TemporalZonedDateTimePrototypeMonthsInYear) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.inleapyear */ \ + CPP(TemporalZonedDateTimePrototypeInLeapYear) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.offsetnanoseconds */ \ + CPP(TemporalZonedDateTimePrototypeOffsetNanoseconds) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.offset */ \ + CPP(TemporalZonedDateTimePrototypeOffset) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.with */ \ + CPP(TemporalZonedDateTimePrototypeWith) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.withplaintime */ \ + CPP(TemporalZonedDateTimePrototypeWithPlainTime) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.withplaindate */ \ + CPP(TemporalZonedDateTimePrototypeWithPlainDate) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.withtimezone */ \ + CPP(TemporalZonedDateTimePrototypeWithTimeZone) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.withcalendar */ \ + CPP(TemporalZonedDateTimePrototypeWithCalendar) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.add */ \ + CPP(TemporalZonedDateTimePrototypeAdd) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.subtract */ \ + CPP(TemporalZonedDateTimePrototypeSubtract) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.until */ \ + CPP(TemporalZonedDateTimePrototypeUntil) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.since */ \ + CPP(TemporalZonedDateTimePrototypeSince) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.round */ \ + CPP(TemporalZonedDateTimePrototypeRound) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.equals */ \ + CPP(TemporalZonedDateTimePrototypeEquals) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.tostring */ \ + CPP(TemporalZonedDateTimePrototypeToString) \ + /* Temporal #sec-temporal.zonedddatetimeprototype.tojson */ \ + CPP(TemporalZonedDateTimePrototypeToJSON) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.valueof */ \ + CPP(TemporalZonedDateTimePrototypeValueOf) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.startofday */ \ + CPP(TemporalZonedDateTimePrototypeStartOfDay) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.toinstant */ \ + CPP(TemporalZonedDateTimePrototypeToInstant) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.toplaindate */ \ + CPP(TemporalZonedDateTimePrototypeToPlainDate) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.toplaintime */ \ + CPP(TemporalZonedDateTimePrototypeToPlainTime) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.toplaindatetime */ \ + CPP(TemporalZonedDateTimePrototypeToPlainDateTime) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.toplainyearmonth */ \ + CPP(TemporalZonedDateTimePrototypeToPlainYearMonth) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.toplainmonthday */ \ + CPP(TemporalZonedDateTimePrototypeToPlainMonthDay) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.getisofields */ \ + CPP(TemporalZonedDateTimePrototypeGetISOFields) \ + \ + /* Temporal.Duration */ \ + /* Temporal #sec-temporal.duration */ \ + CPP(TemporalDurationConstructor) \ + /* Temporal #sec-temporal.duration.from */ \ + CPP(TemporalDurationFrom) \ + /* Temporal #sec-temporal.duration.compare */ \ + CPP(TemporalDurationCompare) \ + /* Temporal #sec-get-temporal.duration.prototype.years */ \ + CPP(TemporalDurationPrototypeYears) \ + /* Temporal #sec-get-temporal.duration.prototype.months */ \ + CPP(TemporalDurationPrototypeMonths) \ + /* Temporal #sec-get-temporal.duration.prototype.weeks */ \ + CPP(TemporalDurationPrototypeWeeks) \ + /* Temporal #sec-get-temporal.duration.prototype.days */ \ + CPP(TemporalDurationPrototypeDays) \ + /* Temporal #sec-get-temporal.duration.prototype.hours */ \ + CPP(TemporalDurationPrototypeHours) \ + /* Temporal #sec-get-temporal.duration.prototype.minutes */ \ + CPP(TemporalDurationPrototypeMinutes) \ + /* Temporal #sec-get-temporal.duration.prototype.seconds */ \ + CPP(TemporalDurationPrototypeSeconds) \ + /* Temporal #sec-get-temporal.duration.prototype.milliseconds */ \ + CPP(TemporalDurationPrototypeMilliseconds) \ + /* Temporal #sec-get-temporal.duration.prototype.microseconds */ \ + CPP(TemporalDurationPrototypeMicroseconds) \ + /* Temporal #sec-get-temporal.duration.prototype.nanoseconds */ \ + CPP(TemporalDurationPrototypeNanoseconds) \ + /* Temporal #sec-get-temporal.duration.prototype.sign */ \ + CPP(TemporalDurationPrototypeSign) \ + /* Temporal #sec-get-temporal.duration.prototype.blank */ \ + CPP(TemporalDurationPrototypeBlank) \ + /* Temporal #sec-temporal.duration.prototype.with */ \ + CPP(TemporalDurationPrototypeWith) \ + /* Temporal #sec-temporal.duration.prototype.negated */ \ + CPP(TemporalDurationPrototypeNegated) \ + /* Temporal #sec-temporal.duration.prototype.abs */ \ + CPP(TemporalDurationPrototypeAbs) \ + /* Temporal #sec-temporal.duration.prototype.add */ \ + CPP(TemporalDurationPrototypeAdd) \ + /* Temporal #sec-temporal.duration.prototype.subtract */ \ + CPP(TemporalDurationPrototypeSubtract) \ + /* Temporal #sec-temporal.duration.prototype.round */ \ + CPP(TemporalDurationPrototypeRound) \ + /* Temporal #sec-temporal.duration.prototype.total */ \ + CPP(TemporalDurationPrototypeTotal) \ + /* Temporal #sec-temporal.duration.prototype.tostring */ \ + CPP(TemporalDurationPrototypeToString) \ + /* Temporal #sec-temporal.duration.tojson */ \ + CPP(TemporalDurationPrototypeToJSON) \ + /* Temporal #sec-temporal.duration.prototype.valueof */ \ + CPP(TemporalDurationPrototypeValueOf) \ + \ + /* Temporal.Instant */ \ + /* Temporal #sec-temporal.instant */ \ + CPP(TemporalInstantConstructor) \ + /* Temporal #sec-temporal.instant.from */ \ + CPP(TemporalInstantFrom) \ + /* Temporal #sec-temporal.instant.fromepochseconds */ \ + CPP(TemporalInstantFromEpochSeconds) \ + /* Temporal #sec-temporal.instant.fromepochmilliseconds */ \ + CPP(TemporalInstantFromEpochMilliseconds) \ + /* Temporal #sec-temporal.instant.fromepochmicroseconds */ \ + CPP(TemporalInstantFromEpochMicroseconds) \ + /* Temporal #sec-temporal.instant.fromepochnanoseconds */ \ + CPP(TemporalInstantFromEpochNanoseconds) \ + /* Temporal #sec-temporal.instant.compare */ \ + CPP(TemporalInstantCompare) \ + /* Temporal #sec-get-temporal.instant.prototype.epochseconds */ \ + CPP(TemporalInstantPrototypeEpochSeconds) \ + /* Temporal #sec-get-temporal.instant.prototype.epochmilliseconds */ \ + CPP(TemporalInstantPrototypeEpochMilliseconds) \ + /* Temporal #sec-get-temporal.instant.prototype.epochmicroseconds */ \ + CPP(TemporalInstantPrototypeEpochMicroseconds) \ + /* Temporal #sec-get-temporal.instant.prototype.epochnanoseconds */ \ + CPP(TemporalInstantPrototypeEpochNanoseconds) \ + /* Temporal #sec-temporal.instant.prototype.add */ \ + CPP(TemporalInstantPrototypeAdd) \ + /* Temporal #sec-temporal.instant.prototype.subtract */ \ + CPP(TemporalInstantPrototypeSubtract) \ + /* Temporal #sec-temporal.instant.prototype.until */ \ + CPP(TemporalInstantPrototypeUntil) \ + /* Temporal #sec-temporal.instant.prototype.since */ \ + CPP(TemporalInstantPrototypeSince) \ + /* Temporal #sec-temporal.instant.prototype.round */ \ + CPP(TemporalInstantPrototypeRound) \ + /* Temporal #sec-temporal.instant.prototype.equals */ \ + CPP(TemporalInstantPrototypeEquals) \ + /* Temporal #sec-temporal.instant.prototype.tostring */ \ + CPP(TemporalInstantPrototypeToString) \ + /* Temporal #sec-temporal.instant.tojson */ \ + CPP(TemporalInstantPrototypeToJSON) \ + /* Temporal #sec-temporal.instant.prototype.valueof */ \ + CPP(TemporalInstantPrototypeValueOf) \ + /* Temporal #sec-temporal.instant.prototype.tozoneddatetime */ \ + CPP(TemporalInstantPrototypeToZonedDateTime) \ + /* Temporal #sec-temporal.instant.prototype.tozoneddatetimeiso */ \ + CPP(TemporalInstantPrototypeToZonedDateTimeISO) \ + \ + /* Temporal.PlainYearMonth */ \ + /* Temporal #sec-temporal.plainyearmonth */ \ + CPP(TemporalPlainYearMonthConstructor) \ + /* Temporal #sec-temporal.plainyearmonth.from */ \ + CPP(TemporalPlainYearMonthFrom) \ + /* Temporal #sec-temporal.plainyearmonth.compare */ \ + CPP(TemporalPlainYearMonthCompare) \ + /* Temporal #sec-get-temporal.plainyearmonth.prototype.calendar */ \ + CPP(TemporalPlainYearMonthPrototypeCalendar) \ + /* Temporal #sec-get-temporal.plainyearmonth.prototype.year */ \ + CPP(TemporalPlainYearMonthPrototypeYear) \ + /* Temporal #sec-get-temporal.plainyearmonth.prototype.month */ \ + CPP(TemporalPlainYearMonthPrototypeMonth) \ + /* Temporal #sec-get-temporal.plainyearmonth.prototype.monthcode */ \ + CPP(TemporalPlainYearMonthPrototypeMonthCode) \ + /* Temporal #sec-get-temporal.plainyearmonth.prototype.daysinyear */ \ + CPP(TemporalPlainYearMonthPrototypeDaysInYear) \ + /* Temporal #sec-get-temporal.plainyearmonth.prototype.daysinmonth */ \ + CPP(TemporalPlainYearMonthPrototypeDaysInMonth) \ + /* Temporal #sec-get-temporal.plainyearmonth.prototype.monthsinyear */ \ + CPP(TemporalPlainYearMonthPrototypeMonthsInYear) \ + /* Temporal #sec-get-temporal.plainyearmonth.prototype.inleapyear */ \ + CPP(TemporalPlainYearMonthPrototypeInLeapYear) \ + /* Temporal #sec-temporal.plainyearmonth.prototype.with */ \ + CPP(TemporalPlainYearMonthPrototypeWith) \ + /* Temporal #sec-temporal.plainyearmonth.prototype.add */ \ + CPP(TemporalPlainYearMonthPrototypeAdd) \ + /* Temporal #sec-temporal.plainyearmonth.prototype.subtract */ \ + CPP(TemporalPlainYearMonthPrototypeSubtract) \ + /* Temporal #sec-temporal.plainyearmonth.prototype.until */ \ + CPP(TemporalPlainYearMonthPrototypeUntil) \ + /* Temporal #sec-temporal.plainyearmonth.prototype.since */ \ + CPP(TemporalPlainYearMonthPrototypeSince) \ + /* Temporal #sec-temporal.plainyearmonth.prototype.equals */ \ + CPP(TemporalPlainYearMonthPrototypeEquals) \ + /* Temporal #sec-temporal.plainyearmonth.tostring */ \ + CPP(TemporalPlainYearMonthPrototypeToString) \ + /* Temporal #sec-temporal.plainyearmonth.tojson */ \ + CPP(TemporalPlainYearMonthPrototypeToJSON) \ + /* Temporal #sec-temporal.plainyearmonth.prototype.valueof */ \ + CPP(TemporalPlainYearMonthPrototypeValueOf) \ + /* Temporal #sec-temporal.plainyearmonth.prototype.toplaindate */ \ + CPP(TemporalPlainYearMonthPrototypeToPlainDate) \ + /* Temporal #sec-temporal.plainyearmonth.prototype.getisofields */ \ + CPP(TemporalPlainYearMonthPrototypeGetISOFields) \ + \ + /* Temporal.PlainMonthDay */ \ + /* Temporal #sec-temporal.plainmonthday */ \ + CPP(TemporalPlainMonthDayConstructor) \ + /* Temporal #sec-temporal.plainmonthday.from */ \ + CPP(TemporalPlainMonthDayFrom) \ + /* There are no compare for PlainMonthDay */ \ + /* See https://github.com/tc39/proposal-temporal/issues/1547 */ \ + /* Temporal #sec-get-temporal.plainmonthday.prototype.calendar */ \ + CPP(TemporalPlainMonthDayPrototypeCalendar) \ + /* Temporal #sec-get-temporal.plainmonthday.prototype.monthcode */ \ + CPP(TemporalPlainMonthDayPrototypeMonthCode) \ + /* Temporal #sec-get-temporal.plainmonthday.prototype.day */ \ + CPP(TemporalPlainMonthDayPrototypeDay) \ + /* Temporal #sec-temporal.plainmonthday.prototype.with */ \ + CPP(TemporalPlainMonthDayPrototypeWith) \ + /* Temporal #sec-temporal.plainmonthday.prototype.equals */ \ + CPP(TemporalPlainMonthDayPrototypeEquals) \ + /* Temporal #sec-temporal.plainmonthday.prototype.tostring */ \ + CPP(TemporalPlainMonthDayPrototypeToString) \ + /* Temporal #sec-temporal.plainmonthday.tojson */ \ + CPP(TemporalPlainMonthDayPrototypeToJSON) \ + /* Temporal #sec-temporal.plainmonthday.prototype.valueof */ \ + CPP(TemporalPlainMonthDayPrototypeValueOf) \ + /* Temporal #sec-temporal.plainmonthday.prototype.toplaindate */ \ + CPP(TemporalPlainMonthDayPrototypeToPlainDate) \ + /* Temporal #sec-temporal.plainmonthday.prototype.getisofields */ \ + CPP(TemporalPlainMonthDayPrototypeGetISOFields) \ + \ + /* Temporal.TimeZone */ \ + /* Temporal #sec-temporal.timezone */ \ + CPP(TemporalTimeZoneConstructor) \ + /* Temporal #sec-temporal.timezone.from */ \ + CPP(TemporalTimeZoneFrom) \ + /* Temporal #sec-get-temporal.timezone.prototype.id */ \ + CPP(TemporalTimeZonePrototypeId) \ + /* Temporal #sec-temporal.timezone.prototype.getoffsetnanosecondsfor */ \ + CPP(TemporalTimeZonePrototypeGetOffsetNanosecondsFor) \ + /* Temporal #sec-temporal.timezone.prototype.getoffsetstringfor */ \ + CPP(TemporalTimeZonePrototypeGetOffsetStringFor) \ + /* Temporal #sec-temporal.timezone.prototype.getplaindatetimefor */ \ + CPP(TemporalTimeZonePrototypeGetPlainDateTimeFor) \ + /* Temporal #sec-temporal.timezone.prototype.getinstantfor */ \ + CPP(TemporalTimeZonePrototypeGetInstantFor) \ + /* Temporal #sec-temporal.timezone.prototype.getpossibleinstantsfor */ \ + CPP(TemporalTimeZonePrototypeGetPossibleInstantsFor) \ + /* Temporal #sec-temporal.timezone.prototype.getnexttransition */ \ + CPP(TemporalTimeZonePrototypeGetNextTransition) \ + /* Temporal #sec-temporal.timezone.prototype.getprevioustransition */ \ + CPP(TemporalTimeZonePrototypeGetPreviousTransition) \ + /* Temporal #sec-temporal.timezone.prototype.tostring */ \ + CPP(TemporalTimeZonePrototypeToString) \ + /* Temporal #sec-temporal.timezone.prototype.tojson */ \ + CPP(TemporalTimeZonePrototypeToJSON) \ + \ + /* Temporal.Calendar */ \ + /* Temporal #sec-temporal.calendar */ \ + CPP(TemporalCalendarConstructor) \ + /* Temporal #sec-temporal.calendar.from */ \ + CPP(TemporalCalendarFrom) \ + /* Temporal #sec-get-temporal.calendar.prototype.id */ \ + CPP(TemporalCalendarPrototypeId) \ + /* Temporal #sec-temporal.calendar.prototype.datefromfields */ \ + CPP(TemporalCalendarPrototypeDateFromFields) \ + /* Temporal #sec-temporal.calendar.prototype.yearmonthfromfields */ \ + CPP(TemporalCalendarPrototypeYearMonthFromFields) \ + /* Temporal #sec-temporal.calendar.prototype.monthdayfromfields */ \ + CPP(TemporalCalendarPrototypeMonthDayFromFields) \ + /* Temporal #sec-temporal.calendar.prototype.dateadd */ \ + CPP(TemporalCalendarPrototypeDateAdd) \ + /* Temporal #sec-temporal.calendar.prototype.dateuntil */ \ + CPP(TemporalCalendarPrototypeDateUntil) \ + /* Temporal #sec-temporal.calendar.prototype.year */ \ + CPP(TemporalCalendarPrototypeYear) \ + /* Temporal #sec-temporal.calendar.prototype.month */ \ + CPP(TemporalCalendarPrototypeMonth) \ + /* Temporal #sec-temporal.calendar.prototype.monthcode */ \ + CPP(TemporalCalendarPrototypeMonthCode) \ + /* Temporal #sec-temporal.calendar.prototype.day */ \ + CPP(TemporalCalendarPrototypeDay) \ + /* Temporal #sec-temporal.calendar.prototype.dayofweek */ \ + CPP(TemporalCalendarPrototypeDayOfWeek) \ + /* Temporal #sec-temporal.calendar.prototype.dayofyear */ \ + CPP(TemporalCalendarPrototypeDayOfYear) \ + /* Temporal #sec-temporal.calendar.prototype.weekofyear */ \ + CPP(TemporalCalendarPrototypeWeekOfYear) \ + /* Temporal #sec-temporal.calendar.prototype.daysinweek */ \ + CPP(TemporalCalendarPrototypeDaysInWeek) \ + /* Temporal #sec-temporal.calendar.prototype.daysinmonth */ \ + CPP(TemporalCalendarPrototypeDaysInMonth) \ + /* Temporal #sec-temporal.calendar.prototype.daysinyear */ \ + CPP(TemporalCalendarPrototypeDaysInYear) \ + /* Temporal #sec-temporal.calendar.prototype.monthsinyear */ \ + CPP(TemporalCalendarPrototypeMonthsInYear) \ + /* Temporal #sec-temporal.calendar.prototype.inleapyear */ \ + CPP(TemporalCalendarPrototypeInLeapYear) \ + /* Temporal #sec-temporal.calendar.prototype.fields */ \ + CPP(TemporalCalendarPrototypeFields) \ + /* Temporal #sec-temporal.calendar.prototype.mergefields */ \ + CPP(TemporalCalendarPrototypeMergeFields) \ + /* Temporal #sec-temporal.calendar.prototype.tostring */ \ + CPP(TemporalCalendarPrototypeToString) \ + /* Temporal #sec-temporal.calendar.prototype.tojson */ \ + CPP(TemporalCalendarPrototypeToJSON) #define BUILTIN_LIST_BASE(CPP, TFJ, TFC, TFS, TFH, ASM) \ BUILTIN_LIST_BASE_TIER0(CPP, TFJ, TFC, TFS, TFH, ASM) \ @@ -1203,6 +1775,45 @@ namespace internal { /* ES #sec-string.prototype.touppercase */ \ CPP(StringPrototypeToUpperCaseIntl) \ TFS(StringToLowerCaseIntl, kString) \ + \ + /* Temporal */ \ + /* Temporal #sec-temporal.calendar.prototype.era */ \ + CPP(TemporalCalendarPrototypeEra) \ + /* Temporal #sec-temporal.calendar.prototype.erayear */ \ + CPP(TemporalCalendarPrototypeEraYear) \ + /* Temporal #sec-temporal.duration.prototype.tolocalestring */ \ + CPP(TemporalDurationPrototypeToLocaleString) \ + /* Temporal #sec-temporal.instant.prototype.tolocalestring */ \ + CPP(TemporalInstantPrototypeToLocaleString) \ + /* Temporal #sec-get-temporal.plaindate.prototype.era */ \ + CPP(TemporalPlainDatePrototypeEra) \ + /* Temporal #sec-get-temporal.plaindate.prototype.erayear */ \ + CPP(TemporalPlainDatePrototypeEraYear) \ + /* Temporal #sec-temporal.plaindate.prototype.tolocalestring */ \ + CPP(TemporalPlainDatePrototypeToLocaleString) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.era */ \ + CPP(TemporalPlainDateTimePrototypeEra) \ + /* Temporal #sec-get-temporal.plaindatetime.prototype.erayear */ \ + CPP(TemporalPlainDateTimePrototypeEraYear) \ + /* Temporal #sec-temporal.plaindatetime.prototype.tolocalestring */ \ + CPP(TemporalPlainDateTimePrototypeToLocaleString) \ + /* Temporal #sec-temporal.plainmonthday.prototype.tolocalestring */ \ + CPP(TemporalPlainMonthDayPrototypeToLocaleString) \ + /* Temporal #sec-temporal.plaintime.prototype.tolocalestring */ \ + CPP(TemporalPlainTimePrototypeToLocaleString) \ + /* Temporal #sec-get-temporal.plainyearmonth.prototype.era */ \ + CPP(TemporalPlainYearMonthPrototypeEra) \ + /* Temporal #sec-get-temporal.plainyearmonth.prototype.erayear */ \ + CPP(TemporalPlainYearMonthPrototypeEraYear) \ + /* Temporal #sec-temporal.plainyearmonth.prototype.tolocalestring */ \ + CPP(TemporalPlainYearMonthPrototypeToLocaleString) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.era */ \ + CPP(TemporalZonedDateTimePrototypeEra) \ + /* Temporal #sec-get-temporal.zoneddatetime.prototype.erayear */ \ + CPP(TemporalZonedDateTimePrototypeEraYear) \ + /* Temporal #sec-temporal.zoneddatetime.prototype.tolocalestring */ \ + CPP(TemporalZonedDateTimePrototypeToLocaleString) \ + \ CPP(V8BreakIteratorConstructor) \ CPP(V8BreakIteratorInternalAdoptText) \ CPP(V8BreakIteratorInternalBreakType) \ diff --git a/src/builtins/builtins-temporal.cc b/src/builtins/builtins-temporal.cc new file mode 100644 index 0000000000..bbffa68a1d --- /dev/null +++ b/src/builtins/builtins-temporal.cc @@ -0,0 +1,631 @@ +// Copyright 2021 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. + +#include "src/builtins/builtins-utils-inl.h" +#include "src/builtins/builtins.h" +#include "src/objects/bigint.h" +#include "src/objects/js-temporal-objects-inl.h" + +namespace v8 { +namespace internal { + +#define TO_BE_IMPLEMENTED(id) \ + BUILTIN(id) { \ + HandleScope scope(isolate); \ + UNIMPLEMENTED(); \ + } + +/* Temporal #sec-temporal.now.timezone */ +TO_BE_IMPLEMENTED(TemporalNowTimeZone) +/* Temporal #sec-temporal.now.instant */ +TO_BE_IMPLEMENTED(TemporalNowInstant) +/* Temporal #sec-temporal.now.plaindatetime */ +TO_BE_IMPLEMENTED(TemporalNowPlainDateTime) +/* Temporal #sec-temporal.now.plaindatetimeiso */ +TO_BE_IMPLEMENTED(TemporalNowPlainDateTimeISO) +/* Temporal #sec-temporal.now.zoneddatetime */ +TO_BE_IMPLEMENTED(TemporalNowZonedDateTime) +/* Temporal #sec-temporal.now.zoneddatetimeiso */ +TO_BE_IMPLEMENTED(TemporalNowZonedDateTimeISO) +/* Temporal #sec-temporal.now.plaindate */ +TO_BE_IMPLEMENTED(TemporalNowPlainDate) +/* Temporal #sec-temporal.now.plaindateiso */ +TO_BE_IMPLEMENTED(TemporalNowPlainDateISO) +/* There are no Temporal.now.plainTime */ +/* See https://github.com/tc39/proposal-temporal/issues/1540 */ +/* Temporal #sec-temporal.now.plaintimeiso */ +TO_BE_IMPLEMENTED(TemporalNowPlainTimeISO) + +/* Temporal.PlaneDate */ +/* Temporal #sec-temporal.plaindate */ +TO_BE_IMPLEMENTED(TemporalPlainDateConstructor) +/* Temporal #sec-temporal.plaindate.from */ +TO_BE_IMPLEMENTED(TemporalPlainDateFrom) +/* Temporal #sec-temporal.plaindate.compare */ +TO_BE_IMPLEMENTED(TemporalPlainDateCompare) +/* Temporal #sec-get-temporal.plaindate.prototype.calendar */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeCalendar) +/* Temporal #sec-get-temporal.plaindate.prototype.year */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeYear) +/* Temporal #sec-get-temporal.plaindate.prototype.month */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeMonth) +/* Temporal #sec-get-temporal.plaindate.prototype.monthcode */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeMonthCode) +/* Temporal #sec-get-temporal.plaindate.prototype.day */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeDay) +/* Temporal #sec-get-temporal.plaindate.prototype.dayofweek */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeDayOfWeek) +/* Temporal #sec-get-temporal.plaindate.prototype.dayofyear */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeDayOfYear) +/* Temporal #sec-get-temporal.plaindate.prototype.weekofyear */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeWeekOfYear) +/* Temporal #sec-get-temporal.plaindate.prototype.daysinweek */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeDaysInWeek) +/* Temporal #sec-get-temporal.plaindate.prototype.daysinmonth */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeDaysInMonth) +/* Temporal #sec-get-temporal.plaindate.prototype.daysinyear */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeDaysInYear) +/* Temporal #sec-get-temporal.plaindate.prototype.monthsinyear */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeMonthsInYear) +/* Temporal #sec-get-temporal.plaindate.prototype.inleapyear */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeInLeapYear) +/* Temporal #sec-temporal.plaindate.prototype.toplainyearmonth */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeToPlainYearMonth) +/* Temporal #sec-temporal.plaindate.prototype.toplainmonthday */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeToPlainMonthDay) +/* Temporal #sec-temporal.plaindate.prototype.getisofields */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeGetISOFields) +/* Temporal #sec-temporal.plaindate.prototype.add */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeAdd) +/* Temporal #sec-temporal.plaindate.prototype.substract */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeSubtract) +/* Temporal #sec-temporal.plaindate.prototype.with */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeWith) +/* Temporal #sec-temporal.plaindate.prototype.withcalendar */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeWithCalendar) +/* Temporal #sec-temporal.plaindate.prototype.until */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeUntil) +/* Temporal #sec-temporal.plaindate.prototype.since */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeSince) +/* Temporal #sec-temporal.plaindate.prototype.equals */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeEquals) +/* Temporal #sec-temporal.plaindate.prototype.toplaindatetime */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeToPlainDateTime) +/* Temporal #sec-temporal.plaindate.prototype.tozoneddatetime */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeToZonedDateTime) +/* Temporal #sec-temporal.plaindate.prototype.tostring */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeToString) +/* Temporal #sec-temporal.plaindate.prototype.tojson */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeToJSON) +/* Temporal #sec-temporal.plaindate.prototype.valueof */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeValueOf) + +/* Temporal.PlaneTime */ +/* Temporal #sec-temporal.plaintime */ +TO_BE_IMPLEMENTED(TemporalPlainTimeConstructor) +/* Temporal #sec-temporal.plaintime.from */ +TO_BE_IMPLEMENTED(TemporalPlainTimeFrom) +/* Temporal #sec-temporal.plaintime.compare */ +TO_BE_IMPLEMENTED(TemporalPlainTimeCompare) +/* Temporal #sec-get-temporal.plaintime.prototype.calendar */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeCalendar) +/* Temporal #sec-get-temporal.plaintime.prototype.hour */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeHour) +/* Temporal #sec-get-temporal.plaintime.prototype.minute */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeMinute) +/* Temporal #sec-get-temporal.plaintime.prototype.second */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeSecond) +/* Temporal #sec-get-temporal.plaintime.prototype.millisecond */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeMillisecond) +/* Temporal #sec-get-temporal.plaintime.prototype.microsecond */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeMicrosecond) +/* Temporal #sec-get-temporal.plaintime.prototype.nanoseond */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeNanosecond) +/* Temporal #sec-temporal.plaintime.prototype.add */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeAdd) +/* Temporal #sec-temporal.plaintime.prototype.subtract */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeSubtract) +/* Temporal #sec-temporal.plaintime.prototype.with */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeWith) +/* Temporal #sec-temporal.plaintime.prototype.until */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeUntil) +/* Temporal #sec-temporal.plaintime.prototype.since */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeSince) +/* Temporal #sec-temporal.plaintime.prototype.round */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeRound) +/* Temporal #sec-temporal.plaintime.prototype.equals */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeEquals) +/* Temporal #sec-temporal.plaintime.prototype.toplaindatetime */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeToPlainDateTime) +/* Temporal #sec-temporal.plaintime.prototype.tozoneddatetime */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeToZonedDateTime) +/* Temporal #sec-temporal.plaintime.prototype.getisofields */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeGetISOFields) +/* Temporal #sec-temporal.plaintime.prototype.tostring */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeToString) +/* Temporal #sec-temporal.plaindtimeprototype.tojson */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeToJSON) +/* Temporal #sec-temporal.plaintime.prototype.valueof */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeValueOf) + +/* Temporal.PlaneDateTime */ +/* Temporal #sec-temporal.plaindatetime */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimeConstructor) +/* Temporal #sec-temporal.plaindatetime.from */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimeFrom) +/* Temporal #sec-temporal.plaindatetime.compare */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimeCompare) +/* Temporal #sec-get-temporal.plaindatetime.prototype.calendar */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeCalendar) +/* Temporal #sec-get-temporal.plaindatetime.prototype.year */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeYear) +/* Temporal #sec-get-temporal.plaindatetime.prototype.month */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeMonth) +/* Temporal #sec-get-temporal.plaindatetime.prototype.monthcode */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeMonthCode) +/* Temporal #sec-get-temporal.plaindatetime.prototype.day */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeDay) +/* Temporal #sec-get-temporal.plaindatetime.prototype.hour */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeHour) +/* Temporal #sec-get-temporal.plaindatetime.prototype.minute */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeMinute) +/* Temporal #sec-get-temporal.plaindatetime.prototype.second */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeSecond) +/* Temporal #sec-get-temporal.plaindatetime.prototype.millisecond */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeMillisecond) +/* Temporal #sec-get-temporal.plaindatetime.prototype.microsecond */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeMicrosecond) +/* Temporal #sec-get-temporal.plaindatetime.prototype.nanosecond */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeNanosecond) +/* Temporal #sec-get-temporal.plaindatetime.prototype.dayofweek */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeDayOfWeek) +/* Temporal #sec-get-temporal.plaindatetime.prototype.dayofyear */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeDayOfYear) +/* Temporal #sec-get-temporal.plaindatetime.prototype.weekofyear */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeWeekOfYear) +/* Temporal #sec-get-temporal.plaindatetime.prototype.daysinweek */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeDaysInWeek) +/* Temporal #sec-get-temporal.plaindatetime.prototype.daysinmonth */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeDaysInMonth) +/* Temporal #sec-get-temporal.plaindatetime.prototype.daysinyear */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeDaysInYear) +/* Temporal #sec-get-temporal.plaindatetime.prototype.monthsinyear */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeMonthsInYear) +/* Temporal #sec-get-temporal.plaindatetime.prototype.inleapyear */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeInLeapYear) +/* Temporal #sec-temporal.plaindatetime.prototype.with */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeWith) +/* Temporal #sec-temporal.plaindatetime.prototype.withplainTime */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeWithPlainTime) +/* Temporal #sec-temporal.plaindatetime.prototype.withplainDate */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeWithPlainDate) +/* Temporal #sec-temporal.plaindatetime.prototype.withcalendar */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeWithCalendar) +/* Temporal #sec-temporal.plaindatetime.prototype.add */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeAdd) +/* Temporal #sec-temporal.plaindatetime.prototype.subtract */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeSubtract) +/* Temporal #sec-temporal.plaindatetime.prototype.until */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeUntil) +/* Temporal #sec-temporal.plaindatetime.prototype.since */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeSince) +/* Temporal #sec-temporal.plaindatetime.prototype.round */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeRound) +/* Temporal #sec-temporal.plaindatetime.prototype.equals */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeEquals) +/* Temporal #sec-temporal.plaindatetime.prototype.tostring */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeToString) +/* Temporal #sec-temporal.plainddatetimeprototype.tojson */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeToJSON) +/* Temporal #sec-temporal.plaindatetime.prototype.valueof */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeValueOf) +/* Temporal #sec-temporal.plaindatetime.prototype.tozoneddatetime */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeToZonedDateTime) +/* Temporal #sec-temporal.plaindatetime.prototype.toplaindate */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeToPlainDate) +/* Temporal #sec-temporal.plaindatetime.prototype.toplainyearmonth */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeToPlainYearMonth) +/* Temporal #sec-temporal.plaindatetime.prototype.toplainmonthday */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeToPlainMonthDay) +/* Temporal #sec-temporal.plaindatetime.prototype.toplaintime */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeToPlainTime) +/* Temporal #sec-temporal.plaindatetime.prototype.getisofields */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeGetISOFields) + +/* Temporal.ZonedDateTime */ +/* Temporal #sec-temporal.zoneddatetime */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimeConstructor) +/* Temporal #sec-temporal.zoneddatetime.from */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimeFrom) +/* Temporal #sec-temporal.zoneddatetime.compare */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimeCompare) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.calendar */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeCalendar) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.timezone */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeTimeZone) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.year */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeYear) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.month */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeMonth) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.monthcode */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeMonthCode) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.day */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeDay) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.hour */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeHour) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.minute */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeMinute) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.second */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeSecond) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.millisecond */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeMillisecond) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.microsecond */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeMicrosecond) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.nanosecond */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeNanosecond) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.epochsecond */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeEpochSeconds) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.epochmilliseconds */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeEpochMilliseconds) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.epochmicroseconds */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeEpochMicroseconds) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.epochnanoseconds */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeEpochNanoseconds) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.dayofweek */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeDayOfWeek) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.dayofyear */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeDayOfYear) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.weekofyear */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeWeekOfYear) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.hoursinday */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeHoursInDay) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinweek */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeDaysInWeek) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinmonth */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeDaysInMonth) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.daysinyear */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeDaysInYear) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.monthsinyear */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeMonthsInYear) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.inleapyear */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeInLeapYear) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.offsetnanoseconds */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeOffsetNanoseconds) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.offset */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeOffset) +/* Temporal #sec-temporal.zoneddatetime.prototype.with */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeWith) +/* Temporal #sec-temporal.zoneddatetime.prototype.withplaintime */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeWithPlainTime) +/* Temporal #sec-temporal.zoneddatetime.prototype.withplaindate */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeWithPlainDate) +/* Temporal #sec-temporal.zoneddatetime.prototype.withtimezone */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeWithTimeZone) +/* Temporal #sec-temporal.zoneddatetime.prototype.withcalendar */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeWithCalendar) +/* Temporal #sec-temporal.zoneddatetime.prototype.add */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeAdd) +/* Temporal #sec-temporal.zoneddatetime.prototype.subtract */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeSubtract) +/* Temporal #sec-temporal.zoneddatetime.prototype.until */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeUntil) +/* Temporal #sec-temporal.zoneddatetime.prototype.since */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeSince) +/* Temporal #sec-temporal.zoneddatetime.prototype.round */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeRound) +/* Temporal #sec-temporal.zoneddatetime.prototype.equals */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeEquals) +/* Temporal #sec-temporal.zoneddatetime.prototype.tostring */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeToString) +/* Temporal #sec-temporal.zonedddatetimeprototype.tojson */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeToJSON) +/* Temporal #sec-temporal.zoneddatetime.prototype.valueof */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeValueOf) +/* Temporal #sec-temporal.zoneddatetime.prototype.startofday */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeStartOfDay) +/* Temporal #sec-temporal.zoneddatetime.prototype.toinstant */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeToInstant) +/* Temporal #sec-temporal.zoneddatetime.prototype.toplaindate */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeToPlainDate) +/* Temporal #sec-temporal.zoneddatetime.prototype.toplaintime */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeToPlainTime) +/* Temporal #sec-temporal.zoneddatetime.prototype.toplaindatetime */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeToPlainDateTime) +/* Temporal #sec-temporal.zoneddatetime.prototype.toplainyearmonth */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeToPlainYearMonth) +/* Temporal #sec-temporal.zoneddatetime.prototype.toplainmonthday */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeToPlainMonthDay) +/* Temporal #sec-temporal.zoneddatetime.prototype.getisofields */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeGetISOFields) + +/* Temporal.Duration */ +/* Temporal #sec-temporal.duration */ +TO_BE_IMPLEMENTED(TemporalDurationConstructor) +/* Temporal #sec-temporal.duration.from */ +TO_BE_IMPLEMENTED(TemporalDurationFrom) +/* Temporal #sec-temporal.duration.compare */ +TO_BE_IMPLEMENTED(TemporalDurationCompare) +/* Temporal #sec-get-temporal.duration.prototype.years */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeYears) +/* Temporal #sec-get-temporal.duration.prototype.months */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeMonths) +/* Temporal #sec-get-temporal.duration.prototype.weeks */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeWeeks) +/* Temporal #sec-get-temporal.duration.prototype.days */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeDays) +/* Temporal #sec-get-temporal.duration.prototype.hours */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeHours) +/* Temporal #sec-get-temporal.duration.prototype.minutes */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeMinutes) +/* Temporal #sec-get-temporal.duration.prototype.seconds */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeSeconds) +/* Temporal #sec-get-temporal.duration.prototype.milliseconds */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeMilliseconds) +/* Temporal #sec-get-temporal.duration.prototype.microseconds */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeMicroseconds) +/* Temporal #sec-get-temporal.duration.prototype.nanoseconds */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeNanoseconds) +/* Temporal #sec-get-temporal.duration.prototype.sign */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeSign) +/* Temporal #sec-get-temporal.duration.prototype.blank */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeBlank) +/* Temporal #sec-temporal.duration.prototype.with */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeWith) +/* Temporal #sec-temporal.duration.prototype.negated */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeNegated) +/* Temporal #sec-temporal.duration.prototype.abs */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeAbs) +/* Temporal #sec-temporal.duration.prototype.add */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeAdd) +/* Temporal #sec-temporal.duration.prototype.subtract */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeSubtract) +/* Temporal #sec-temporal.duration.prototype.round */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeRound) +/* Temporal #sec-temporal.duration.prototype.total */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeTotal) +/* Temporal #sec-temporal.duration.prototype.tostring */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeToString) +/* Temporal #sec-temporal.duration.tojson */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeToJSON) +/* Temporal #sec-temporal.duration.prototype.valueof */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeValueOf) + +/* Temporal.Instant */ +/* Temporal #sec-temporal.instant */ +TO_BE_IMPLEMENTED(TemporalInstantConstructor) +/* Temporal #sec-temporal.instant.from */ +TO_BE_IMPLEMENTED(TemporalInstantFrom) +/* Temporal #sec-temporal.instant.fromepochseconds */ +TO_BE_IMPLEMENTED(TemporalInstantFromEpochSeconds) +/* Temporal #sec-temporal.instant.fromepochmilliseconds */ +TO_BE_IMPLEMENTED(TemporalInstantFromEpochMilliseconds) +/* Temporal #sec-temporal.instant.fromepochmicroseconds */ +TO_BE_IMPLEMENTED(TemporalInstantFromEpochMicroseconds) +/* Temporal #sec-temporal.instant.fromepochnanoseconds */ +TO_BE_IMPLEMENTED(TemporalInstantFromEpochNanoseconds) +/* Temporal #sec-temporal.instant.compare */ +TO_BE_IMPLEMENTED(TemporalInstantCompare) +/* Temporal #sec-get-temporal.instant.prototype.epochseconds */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeEpochSeconds) +/* Temporal #sec-get-temporal.instant.prototype.epochmilliseconds */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeEpochMilliseconds) +/* Temporal #sec-get-temporal.instant.prototype.epochmicroseconds */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeEpochMicroseconds) +/* Temporal #sec-get-temporal.instant.prototype.epochnanoseconds */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeEpochNanoseconds) +/* Temporal #sec-temporal.instant.prototype.add */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeAdd) +/* Temporal #sec-temporal.instant.prototype.subtract */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeSubtract) +/* Temporal #sec-temporal.instant.prototype.until */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeUntil) +/* Temporal #sec-temporal.instant.prototype.since */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeSince) +/* Temporal #sec-temporal.instant.prototype.round */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeRound) +/* Temporal #sec-temporal.instant.prototype.equals */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeEquals) +/* Temporal #sec-temporal.instant.prototype.tostring */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeToString) +/* Temporal #sec-temporal.instant.tojson */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeToJSON) +/* Temporal #sec-temporal.instant.prototype.valueof */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeValueOf) +/* Temporal #sec-temporal.instant.prototype.tozoneddatetime */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeToZonedDateTime) +/* Temporal #sec-temporal.instant.prototype.tozoneddatetimeiso */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeToZonedDateTimeISO) + +/* Temporal.PlainYearMonth */ +/* Temporal #sec-temporal.plainyearmonth */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthConstructor) +/* Temporal #sec-temporal.plainyearmonth.from */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthFrom) +/* Temporal #sec-temporal.plainyearmonth.compare */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthCompare) +/* Temporal #sec-get-temporal.plainyearmonth.prototype.calendar */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeCalendar) +/* Temporal #sec-get-temporal.plainyearmonth.prototype.year */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeYear) +/* Temporal #sec-get-temporal.plainyearmonth.prototype.month */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeMonth) +/* Temporal #sec-get-temporal.plainyearmonth.prototype.monthcode */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeMonthCode) +/* Temporal #sec-get-temporal.plainyearmonth.prototype.daysinyear */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeDaysInYear) +/* Temporal #sec-get-temporal.plainyearmonth.prototype.daysinmonth */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeDaysInMonth) +/* Temporal #sec-get-temporal.plainyearmonth.prototype.monthsinyear */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeMonthsInYear) +/* Temporal #sec-get-temporal.plainyearmonth.prototype.inleapyear */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeInLeapYear) +/* Temporal #sec-temporal.plainyearmonth.prototype.with */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeWith) +/* Temporal #sec-temporal.plainyearmonth.prototype.add */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeAdd) +/* Temporal #sec-temporal.plainyearmonth.prototype.subtract */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeSubtract) +/* Temporal #sec-temporal.plainyearmonth.prototype.until */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeUntil) +/* Temporal #sec-temporal.plainyearmonth.prototype.since */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeSince) +/* Temporal #sec-temporal.plainyearmonth.prototype.equals */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeEquals) +/* Temporal #sec-temporal.plainyearmonth.tostring */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeToString) +/* Temporal #sec-temporal.plainyearmonth.tojson */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeToJSON) +/* Temporal #sec-temporal.plainyearmonth.prototype.valueof */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeValueOf) +/* Temporal #sec-temporal.plainyearmonth.prototype.toplaindate */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeToPlainDate) +/* Temporal #sec-temporal.plainyearmonth.prototype.getisofields */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeGetISOFields) + +/* Temporal.PlainMonthDay */ +/* Temporal #sec-temporal.plainmonthday */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayConstructor) +/* Temporal #sec-temporal.plainmonthday.from */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayFrom) +/* There are no compare for PlainMonthDay */ +/* See https://github.com/tc39/proposal-temporal/issues/1547 */ +/* Temporal #sec-get-temporal.plainmonthday.prototype.calendar */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayPrototypeCalendar) +/* Temporal #sec-get-temporal.plainmonthday.prototype.monthcode */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayPrototypeMonthCode) +/* Temporal #sec-get-temporal.plainmonthday.prototype.day */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayPrototypeDay) +/* Temporal #sec-temporal.plainmonthday.prototype.with */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayPrototypeWith) +/* Temporal #sec-temporal.plainmonthday.prototype.equals */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayPrototypeEquals) +/* Temporal #sec-temporal.plainmonthday.prototype.tostring */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayPrototypeToString) +/* Temporal #sec-temporal.plainmonthday.tojson */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayPrototypeToJSON) +/* Temporal #sec-temporal.plainmonthday.prototype.valueof */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayPrototypeValueOf) +/* Temporal #sec-temporal.plainmonthday.prototype.toplaindate */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayPrototypeToPlainDate) +/* Temporal #sec-temporal.plainmonthday.prototype.getisofields */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayPrototypeGetISOFields) + +/* Temporal.TimeZone */ +/* Temporal #sec-temporal.timezone */ +TO_BE_IMPLEMENTED(TemporalTimeZoneConstructor) +/* Temporal #sec-temporal.timezone.from */ +TO_BE_IMPLEMENTED(TemporalTimeZoneFrom) +/* Temporal #sec-get-temporal.timezone.prototype.id */ +TO_BE_IMPLEMENTED(TemporalTimeZonePrototypeId) +/* Temporal #sec-temporal.timezone.prototype.getoffsetnanosecondsfor */ +TO_BE_IMPLEMENTED(TemporalTimeZonePrototypeGetOffsetNanosecondsFor) +/* Temporal #sec-temporal.timezone.prototype.getoffsetstringfor */ +TO_BE_IMPLEMENTED(TemporalTimeZonePrototypeGetOffsetStringFor) +/* Temporal #sec-temporal.timezone.prototype.getplaindatetimefor */ +TO_BE_IMPLEMENTED(TemporalTimeZonePrototypeGetPlainDateTimeFor) +/* Temporal #sec-temporal.timezone.prototype.getinstantfor */ +TO_BE_IMPLEMENTED(TemporalTimeZonePrototypeGetInstantFor) +/* Temporal #sec-temporal.timezone.prototype.getpossibleinstantsfor */ +TO_BE_IMPLEMENTED(TemporalTimeZonePrototypeGetPossibleInstantsFor) +/* Temporal #sec-temporal.timezone.prototype.getnexttransition */ +TO_BE_IMPLEMENTED(TemporalTimeZonePrototypeGetNextTransition) +/* Temporal #sec-temporal.timezone.prototype.getprevioustransition */ +TO_BE_IMPLEMENTED(TemporalTimeZonePrototypeGetPreviousTransition) +/* Temporal #sec-temporal.timezone.prototype.tostring */ +TO_BE_IMPLEMENTED(TemporalTimeZonePrototypeToString) +/* Temporal #sec-temporal.timezone.prototype.tojson */ +TO_BE_IMPLEMENTED(TemporalTimeZonePrototypeToJSON) + +/* Temporal.Calendar */ +/* Temporal #sec-temporal.calendar */ +TO_BE_IMPLEMENTED(TemporalCalendarConstructor) +/* Temporal #sec-temporal.calendar.from */ +TO_BE_IMPLEMENTED(TemporalCalendarFrom) +/* Temporal #sec-get-temporal.calendar.prototype.id */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeId) +/* Temporal #sec-temporal.calendar.prototype.datefromfields */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeDateFromFields) +/* Temporal #sec-temporal.calendar.prototype.yearmonthfromfields */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeYearMonthFromFields) +/* Temporal #sec-temporal.calendar.prototype.monthdayfromfields */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeMonthDayFromFields) +/* Temporal #sec-temporal.calendar.prototype.dateadd */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeDateAdd) +/* Temporal #sec-temporal.calendar.prototype.dateuntil */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeDateUntil) +/* Temporal #sec-temporal.calendar.prototype.year */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeYear) +/* Temporal #sec-temporal.calendar.prototype.month */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeMonth) +/* Temporal #sec-temporal.calendar.prototype.monthcode */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeMonthCode) +/* Temporal #sec-temporal.calendar.prototype.day */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeDay) +/* Temporal #sec-temporal.calendar.prototype.dayofweek */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeDayOfWeek) +/* Temporal #sec-temporal.calendar.prototype.dayofyear */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeDayOfYear) +/* Temporal #sec-temporal.calendar.prototype.weekofyear */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeWeekOfYear) +/* Temporal #sec-temporal.calendar.prototype.daysinweek */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeDaysInWeek) +/* Temporal #sec-temporal.calendar.prototype.daysinmonth */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeDaysInMonth) +/* Temporal #sec-temporal.calendar.prototype.daysinyear */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeDaysInYear) +/* Temporal #sec-temporal.calendar.prototype.monthsinyear */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeMonthsInYear) +/* Temporal #sec-temporal.calendar.prototype.inleapyear */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeInLeapYear) +/* Temporal #sec-temporal.calendar.prototype.fields */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeFields) +/* Temporal #sec-temporal.calendar.prototype.mergefields */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeMergeFields) +/* Temporal #sec-temporal.calendar.prototype.tostring */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeToString) +/* Temporal #sec-temporal.calendar.prototype.tojson */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeToJSON) + +#ifdef V8_INTL_SUPPORT +/* Temporal */ +/* Temporal #sec-temporal.calendar.prototype.era */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeEra) +/* Temporal #sec-temporal.calendar.prototype.erayear */ +TO_BE_IMPLEMENTED(TemporalCalendarPrototypeEraYear) +/* Temporal #sec-temporal.duration.prototype.tolocalestring */ +TO_BE_IMPLEMENTED(TemporalDurationPrototypeToLocaleString) +/* Temporal #sec-temporal.instant.prototype.tolocalestring */ +TO_BE_IMPLEMENTED(TemporalInstantPrototypeToLocaleString) +/* Temporal #sec-get-temporal.plaindate.prototype.era */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeEra) +/* Temporal #sec-get-temporal.plaindate.prototype.erayear */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeEraYear) +/* Temporal #sec-temporal.plaindate.prototype.tolocalestring */ +TO_BE_IMPLEMENTED(TemporalPlainDatePrototypeToLocaleString) +/* Temporal #sec-get-temporal.plaindatetime.prototype.era */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeEra) +/* Temporal #sec-get-temporal.plaindatetime.prototype.erayear */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeEraYear) +/* Temporal #sec-temporal.plaindatetime.prototype.tolocalestring */ +TO_BE_IMPLEMENTED(TemporalPlainDateTimePrototypeToLocaleString) +/* Temporal #sec-temporal.plainmonthday.prototype.tolocalestring */ +TO_BE_IMPLEMENTED(TemporalPlainMonthDayPrototypeToLocaleString) +/* Temporal #sec-temporal.plaintime.prototype.tolocalestring */ +TO_BE_IMPLEMENTED(TemporalPlainTimePrototypeToLocaleString) +/* Temporal #sec-get-temporal.plainyearmonth.prototype.era */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeEra) +/* Temporal #sec-get-temporal.plainyearmonth.prototype.erayear */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeEraYear) +/* Temporal #sec-temporal.plainyearmonth.prototype.tolocalestring */ +TO_BE_IMPLEMENTED(TemporalPlainYearMonthPrototypeToLocaleString) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.era */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeEra) +/* Temporal #sec-get-temporal.zoneddatetime.prototype.erayear */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeEraYear) +/* Temporal #sec-temporal.zoneddatetime.prototype.tolocalestring */ +TO_BE_IMPLEMENTED(TemporalZonedDateTimePrototypeToLocaleString) +#endif // V8_INTL_SUPPORT + +} // namespace internal +} // namespace v8 diff --git a/src/compiler/types.cc b/src/compiler/types.cc index 15c9f195e0..d4c0f782b3 100644 --- a/src/compiler/types.cc +++ b/src/compiler/types.cc @@ -256,6 +256,16 @@ Type::bitset BitsetType::Lub(const MapRefLike& map) { case JS_WEAK_REF_TYPE: case JS_WEAK_SET_TYPE: case JS_PROMISE_TYPE: + case JS_TEMPORAL_CALENDAR_TYPE: + case JS_TEMPORAL_DURATION_TYPE: + case JS_TEMPORAL_INSTANT_TYPE: + case JS_TEMPORAL_PLAIN_DATE_TYPE: + case JS_TEMPORAL_PLAIN_DATE_TIME_TYPE: + case JS_TEMPORAL_PLAIN_MONTH_DAY_TYPE: + case JS_TEMPORAL_PLAIN_TIME_TYPE: + case JS_TEMPORAL_PLAIN_YEAR_MONTH_TYPE: + case JS_TEMPORAL_TIME_ZONE_TYPE: + case JS_TEMPORAL_ZONED_DATE_TIME_TYPE: #if V8_ENABLE_WEBASSEMBLY case WASM_ARRAY_TYPE: case WASM_TAG_OBJECT_TYPE: diff --git a/src/diagnostics/objects-debug.cc b/src/diagnostics/objects-debug.cc index c32a112e24..e9372179b2 100644 --- a/src/diagnostics/objects-debug.cc +++ b/src/diagnostics/objects-debug.cc @@ -58,6 +58,7 @@ #include "src/objects/js-segmenter-inl.h" #include "src/objects/js-segments-inl.h" #endif // V8_INTL_SUPPORT +#include "src/objects/js-temporal-objects-inl.h" #include "src/objects/js-weak-refs-inl.h" #include "src/objects/literal-objects-inl.h" #include "src/objects/maybe-object.h" diff --git a/src/diagnostics/objects-printer.cc b/src/diagnostics/objects-printer.cc index c41a1c7557..a05941d77e 100644 --- a/src/diagnostics/objects-printer.cc +++ b/src/diagnostics/objects-printer.cc @@ -2113,6 +2113,55 @@ void Script::ScriptPrint(std::ostream& os) { os << "\n"; } +void JSTemporalPlainDate::JSTemporalPlainDatePrint(std::ostream& os) { + JSObjectPrintHeader(os, *this, "JSTemporalPlainDate"); + JSObjectPrintBody(os, *this); +} + +void JSTemporalPlainTime::JSTemporalPlainTimePrint(std::ostream& os) { + JSObjectPrintHeader(os, *this, "JSTemporalPlainTime"); + JSObjectPrintBody(os, *this); +} + +void JSTemporalPlainDateTime::JSTemporalPlainDateTimePrint(std::ostream& os) { + JSObjectPrintHeader(os, *this, "JSTemporalPlainDateTime"); + JSObjectPrintBody(os, *this); +} + +void JSTemporalZonedDateTime::JSTemporalZonedDateTimePrint(std::ostream& os) { + JSObjectPrintHeader(os, *this, "JSTemporalZonedDateTime"); + JSObjectPrintBody(os, *this); +} + +void JSTemporalDuration::JSTemporalDurationPrint(std::ostream& os) { + JSObjectPrintHeader(os, *this, "JSTemporalDuration"); + JSObjectPrintBody(os, *this); +} + +void JSTemporalInstant::JSTemporalInstantPrint(std::ostream& os) { + JSObjectPrintHeader(os, *this, "JSTemporalInstant"); + JSObjectPrintBody(os, *this); +} + +void JSTemporalPlainYearMonth::JSTemporalPlainYearMonthPrint(std::ostream& os) { + JSObjectPrintHeader(os, *this, "JSTemporalPlainYearMonth"); + JSObjectPrintBody(os, *this); +} + +void JSTemporalPlainMonthDay::JSTemporalPlainMonthDayPrint(std::ostream& os) { + JSObjectPrintHeader(os, *this, "JSTemporalPlainMonthDay"); + JSObjectPrintBody(os, *this); +} + +void JSTemporalTimeZone::JSTemporalTimeZonePrint(std::ostream& os) { + JSObjectPrintHeader(os, *this, "JSTemporalTimeZone"); + JSObjectPrintBody(os, *this); +} + +void JSTemporalCalendar::JSTemporalCalendarPrint(std::ostream& os) { + JSObjectPrintHeader(os, *this, "JSTemporalCalendar"); + JSObjectPrintBody(os, *this); +} #ifdef V8_INTL_SUPPORT void JSV8BreakIterator::JSV8BreakIteratorPrint(std::ostream& os) { JSObjectPrintHeader(os, *this, "JSV8BreakIterator"); diff --git a/src/flags/flag-definitions.h b/src/flags/flag-definitions.h index 7e514ea1ab..51fc86d308 100644 --- a/src/flags/flag-definitions.h +++ b/src/flags/flag-definitions.h @@ -303,7 +303,8 @@ DEFINE_BOOL(harmony_shipping, true, "enable all shipped harmony features") "harmony weak references with FinalizationRegistry.prototype.cleanupSome") \ V(harmony_import_assertions, "harmony import assertions") \ V(harmony_rab_gsab, \ - "harmony ResizableArrayBuffer / GrowableSharedArrayBuffer") + "harmony ResizableArrayBuffer / GrowableSharedArrayBuffer") \ + V(harmony_temporal, "Temporal") #ifdef V8_INTL_SUPPORT #define HARMONY_INPROGRESS(V) HARMONY_INPROGRESS_BASE(V) diff --git a/src/init/bootstrapper.cc b/src/init/bootstrapper.cc index ea654ba103..912bddf501 100644 --- a/src/init/bootstrapper.cc +++ b/src/init/bootstrapper.cc @@ -58,6 +58,7 @@ #include "src/objects/js-segments.h" #endif // V8_INTL_SUPPORT #include "src/codegen/script-details.h" +#include "src/objects/js-temporal-objects-inl.h" #include "src/objects/js-weak-refs.h" #include "src/objects/ordered-hash-table.h" #include "src/objects/property-cell.h" @@ -4544,6 +4545,635 @@ void Genesis::InitializeGlobal_harmony_rab_gsab() { Builtin::kSharedArrayBufferPrototypeGrow, 1, true); } +void Genesis::InitializeGlobal_harmony_temporal() { + if (!FLAG_harmony_temporal) return; + // -- T e m p o r a l + // #sec-temporal-objects + Handle temporal = + factory()->NewJSObject(isolate_->object_function(), AllocationType::kOld); + Handle global(native_context()->global_object(), isolate()); + JSObject::AddProperty(isolate_, global, "Temporal", temporal, DONT_ENUM); + + // The initial value of the @@toStringTag property is the string value + // *"Temporal"*. + // https://github.com/tc39/proposal-temporal/issues/1539 + InstallToStringTag(isolate_, temporal, "Temporal"); + + { // -- N o w + // #sec-temporal-now-object + Handle now = factory()->NewJSObject(isolate_->object_function(), + AllocationType::kOld); + JSObject::AddProperty(isolate_, temporal, "Now", now, DONT_ENUM); + + // Note: There are NO Temporal.Now.plainTime + // See https://github.com/tc39/proposal-temporal/issues/1540 +#define NOW_LIST(V) \ + V(timeZone, TimeZone, 0) \ + V(instant, Instant, 0) \ + V(plainDateTime, PlainDateTime, 1) \ + V(plainDateTimeISO, PlainDateTimeISO, 0) \ + V(zonedDateTime, ZonedDateTime, 1) \ + V(zonedDateTimeISO, ZonedDateTimeISO, 0) \ + V(plainDate, PlainDate, 1) \ + V(plainDateISO, PlainDateISO, 0) \ + V(plainTimeISO, PlainTimeISO, 0) + +#define INSTALL_NOW_FUNC(p, N, n) \ + SimpleInstallFunction(isolate(), now, #p, Builtin::kTemporalNow##N, n, false); + + NOW_LIST(INSTALL_NOW_FUNC) +#undef INSTALL_NOW_FUNC +#undef NOW_LIST + } +#define INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE(N, U, NUM_ARGS) \ + Handle obj_func = InstallFunction( \ + isolate(), temporal, #N, JS_TEMPORAL_##U##_TYPE, \ + JSTemporal##N::kHeaderSize, 0, factory()->the_hole_value(), \ + Builtin::kTemporal##N##Constructor); \ + obj_func->shared().set_length(NUM_ARGS); \ + obj_func->shared().DontAdaptArguments(); \ + InstallWithIntrinsicDefaultProto(isolate_, obj_func, \ + Context::JS_TEMPORAL_##U##_FUNCTION_INDEX); \ + Handle prototype(JSObject::cast(obj_func->instance_prototype()), \ + isolate()); \ + InstallToStringTag(isolate(), prototype, "Temporal." #N); + +#define INSTALL_TEMPORAL_FUNC(T, name, N, arg) \ + SimpleInstallFunction(isolate(), obj_func, #name, Builtin::kTemporal##T##N, \ + arg, false); + + { // -- P l a i n D a t e + // #sec-temporal-plaindate-objects + // #sec-temporal.plaindate + INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE(PlainDate, PLAIN_DATE, 3) + INSTALL_TEMPORAL_FUNC(PlainDate, from, From, 1) + INSTALL_TEMPORAL_FUNC(PlainDate, compare, Compare, 2) + +#ifdef V8_INTL_SUPPORT +#define PLAIN_DATE_GETTER_LIST_INTL(V) \ + V(era, Era) \ + V(eraYear, EraYear) +#else +#define PLAIN_DATE_GETTER_LIST_INTL(V) +#endif // V8_INTL_SUPPORT + +#define PLAIN_DATE_GETTER_LIST(V) \ + PLAIN_DATE_GETTER_LIST_INTL(V) \ + V(calendar, Calendar) \ + V(year, Year) \ + V(month, Month) \ + V(monthCode, MonthCode) \ + V(day, Day) \ + V(dayOfWeek, DayOfWeek) \ + V(dayOfYear, DayOfYear) \ + V(weekOfYear, WeekOfYear) \ + V(daysInWeek, DaysInWeek) \ + V(daysInMonth, DaysInMonth) \ + V(daysInYear, DaysInYear) \ + V(monthsInYear, MonthsInYear) \ + V(inLeapYear, InLeapYear) + +#define INSTALL_PLAIN_DATE_GETTER_FUNC(p, N) \ + SimpleInstallGetter(isolate(), prototype, isolate_->factory()->p##_string(), \ + Builtin::kTemporalPlainDatePrototype##N, true); + + PLAIN_DATE_GETTER_LIST(INSTALL_PLAIN_DATE_GETTER_FUNC) +#undef PLAIN_DATE_GETTER_LIST +#undef PLAIN_DATE_GETTER_LIST_INTL +#undef INSTALL_PLAIN_DATE_GETTER_FUNC + +#define PLAIN_DATE_FUNC_LIST(V) \ + V(toPlainYearMonth, ToPlainYearMonth, 0) \ + V(toPlainMonthDay, ToPlainMonthDay, 0) \ + V(getISOFiels, GetISOFields, 0) \ + V(add, Add, 1) \ + V(subtract, Subtract, 1) \ + V(with, With, 1) \ + V(withCalendar, WithCalendar, 1) \ + V(until, Until, 1) \ + V(since, Since, 1) \ + V(equals, Equals, 1) \ + V(getISOFields, GetISOFields, 0) \ + V(toPlainDateTime, ToPlainDateTime, 0) \ + V(toZonedDateTime, ToZonedDateTime, 1) \ + V(toString, ToString, 0) \ + V(toJSON, ToJSON, 0) \ + V(valueOf, ValueOf, 0) + +#define INSTALL_PLAIN_DATE_FUNC(p, N, min) \ + SimpleInstallFunction(isolate(), prototype, #p, \ + Builtin::kTemporalPlainDatePrototype##N, min, false); + PLAIN_DATE_FUNC_LIST(INSTALL_PLAIN_DATE_FUNC) +#undef PLAIN_DATE_FUNC_LIST +#undef INSTALL_PLAIN_DATE_FUNC + +#ifdef V8_INTL_SUPPORT +#define INSTALL_TO_LOCALE_STRING_FUNC(R) \ + SimpleInstallFunction(isolate(), prototype, "toLocaleString", \ + Builtin::kTemporal##R##PrototypeToLocaleString, 0, \ + false); +#else +#define INSTALL_TO_LOCALE_STRING_FUNC(R) \ + /* Install Intl fallback functions. */ \ + SimpleInstallFunction(isolate(), prototype, "toLocaleString", \ + Builtin::kTemporal##R##PrototypeToString, 0, false); +#endif // V8_INTL_SUPPORT + + INSTALL_TO_LOCALE_STRING_FUNC(PlainDate) + } + { // -- P l a i n T i m e + // #sec-temporal-plaintime-objects + // #sec-temporal.plaintime + INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE(PlainTime, PLAIN_TIME, 0) + INSTALL_TEMPORAL_FUNC(PlainTime, from, From, 1) + INSTALL_TEMPORAL_FUNC(PlainTime, compare, Compare, 2) + +#define PLAIN_TIME_GETTER_LIST(V) \ + V(calendar, Calendar) \ + V(hour, Hour) \ + V(minute, Minute) \ + V(second, Second) \ + V(millisecond, Millisecond) \ + V(microsecond, Microsecond) \ + V(nanosecond, Nanosecond) + +#define INSTALL_PLAIN_TIME_GETTER_FUNC(p, N) \ + SimpleInstallGetter(isolate(), prototype, isolate_->factory()->p##_string(), \ + Builtin::kTemporalPlainTimePrototype##N, true); + + PLAIN_TIME_GETTER_LIST(INSTALL_PLAIN_TIME_GETTER_FUNC) +#undef PLAIN_TIME_GETTER_LIST +#undef INSTALL_PLAIN_TIME_GETTER_FUNC + +#define PLAIN_TIME_FUNC_LIST(V) \ + V(add, Add, 1) \ + V(subtract, Subtract, 1) \ + V(with, With, 1) \ + V(until, Until, 1) \ + V(since, Since, 1) \ + V(round, Round, 1) \ + V(equals, Equals, 1) \ + V(toPlainDateTime, ToPlainDateTime, 1) \ + V(toZonedDateTime, ToZonedDateTime, 1) \ + V(getISOFields, GetISOFields, 0) \ + V(toString, ToString, 0) \ + V(toJSON, ToJSON, 0) \ + V(valueOf, ValueOf, 0) + +#define INSTALL_PLAIN_TIME_FUNC(p, N, min) \ + SimpleInstallFunction(isolate(), prototype, #p, \ + Builtin::kTemporalPlainTimePrototype##N, min, false); + PLAIN_TIME_FUNC_LIST(INSTALL_PLAIN_TIME_FUNC) +#undef PLAIN_TIME_FUNC_LIST +#undef INSTALL_PLAIN_TIME_FUNC + + INSTALL_TO_LOCALE_STRING_FUNC(PlainTime) + } + { // -- P l a i n D a t e T i m e + // #sec-temporal-plaindatetime-objects + // #sec-temporal.plaindatetime + INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE(PlainDateTime, PLAIN_DATE_TIME, 3) + INSTALL_TEMPORAL_FUNC(PlainDateTime, from, From, 1) + INSTALL_TEMPORAL_FUNC(PlainDateTime, compare, Compare, 2) + +#ifdef V8_INTL_SUPPORT +#define PLAIN_DATE_TIME_GETTER_LIST_INTL(V) \ + V(era, Era) \ + V(eraYear, EraYear) +#else +#define PLAIN_DATE_TIME_GETTER_LIST_INTL(V) +#endif // V8_INTL_SUPPORT + +#define PLAIN_DATE_TIME_GETTER_LIST(V) \ + PLAIN_DATE_TIME_GETTER_LIST_INTL(V) \ + V(calendar, Calendar) \ + V(year, Year) \ + V(month, Month) \ + V(monthCode, MonthCode) \ + V(day, Day) \ + V(hour, Hour) \ + V(minute, Minute) \ + V(second, Second) \ + V(millisecond, Millisecond) \ + V(microsecond, Microsecond) \ + V(nanosecond, Nanosecond) \ + V(dayOfWeek, DayOfWeek) \ + V(dayOfYear, DayOfYear) \ + V(weekOfYear, WeekOfYear) \ + V(daysInWeek, DaysInWeek) \ + V(daysInMonth, DaysInMonth) \ + V(daysInYear, DaysInYear) \ + V(monthsInYear, MonthsInYear) \ + V(inLeapYear, InLeapYear) + +#define INSTALL_PLAIN_DATE_TIME_GETTER_FUNC(p, N) \ + SimpleInstallGetter(isolate(), prototype, isolate_->factory()->p##_string(), \ + Builtin::kTemporalPlainDateTimePrototype##N, true); + + PLAIN_DATE_TIME_GETTER_LIST(INSTALL_PLAIN_DATE_TIME_GETTER_FUNC) +#undef PLAIN_DATE_TIME_GETTER_LIST +#undef PLAIN_DATE_TIME_GETTER_LIST_INTL +#undef INSTALL_PLAIN_DATE_TIME_GETTER_FUNC + +#define PLAIN_DATE_TIME_FUNC_LIST(V) \ + V(with, With, 1) \ + V(withPlainTime, WithPlainTime, 0) \ + V(withPlainDate, WithPlainDate, 1) \ + V(withCalendar, WithCalendar, 1) \ + V(add, Add, 1) \ + V(subtract, Subtract, 1) \ + V(until, Until, 1) \ + V(since, Since, 1) \ + V(round, Round, 1) \ + V(equals, Equals, 1) \ + V(toJSON, ToJSON, 0) \ + V(toString, ToString, 0) \ + V(valueOf, ValueOf, 0) \ + V(toZonedDateTime, ToZonedDateTime, 1) \ + V(toPlainDate, ToPlainDate, 0) \ + V(toPlainYearMonth, ToPlainYearMonth, 0) \ + V(toPlainMonthDay, ToPlainMonthDay, 0) \ + V(toPlainTime, ToPlainTime, 0) \ + V(getISOFields, GetISOFields, 0) + +#define INSTALL_PLAIN_DATE_TIME_FUNC(p, N, min) \ + SimpleInstallFunction(isolate(), prototype, #p, \ + Builtin::kTemporalPlainDateTimePrototype##N, min, \ + false); + PLAIN_DATE_TIME_FUNC_LIST(INSTALL_PLAIN_DATE_TIME_FUNC) +#undef PLAIN_DATE_TIME_FUNC_LIST +#undef INSTALL_PLAIN_DATE_TIME_FUNC + + INSTALL_TO_LOCALE_STRING_FUNC(PlainDateTime) + } + { // -- Z o n e d D a t e T i m e + // #sec-temporal-zoneddatetime-objects + // #sec-temporal.zoneddatetime + INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE(ZonedDateTime, ZONED_DATE_TIME, 2) + INSTALL_TEMPORAL_FUNC(ZonedDateTime, from, From, 1) + INSTALL_TEMPORAL_FUNC(ZonedDateTime, compare, Compare, 2) + +#ifdef V8_INTL_SUPPORT +#define ZONED_DATE_TIME_GETTER_LIST_INTL(V) \ + V(era, Era) \ + V(eraYear, EraYear) +#else +#define ZONED_DATE_TIME_GETTER_LIST_INTL(V) +#endif // V8_INTL_SUPPORT + +#define ZONED_DATE_TIME_GETTER_LIST(V) \ + ZONED_DATE_TIME_GETTER_LIST_INTL(V) \ + V(calendar, Calendar) \ + V(timeZone, TimeZone) \ + V(year, Year) \ + V(month, Month) \ + V(monthCode, MonthCode) \ + V(day, Day) \ + V(hour, Hour) \ + V(minute, Minute) \ + V(second, Second) \ + V(millisecond, Millisecond) \ + V(microsecond, Microsecond) \ + V(nanosecond, Nanosecond) \ + V(epochSeconds, EpochSeconds) \ + V(epochMilliseconds, EpochMilliseconds) \ + V(epochMicroseconds, EpochMicroseconds) \ + V(epochNanoseconds, EpochNanoseconds) \ + V(dayOfWeek, DayOfWeek) \ + V(dayOfYear, DayOfYear) \ + V(weekOfYear, WeekOfYear) \ + V(hoursInDay, HoursInDay) \ + V(daysInWeek, DaysInWeek) \ + V(daysInMonth, DaysInMonth) \ + V(daysInYear, DaysInYear) \ + V(monthsInYear, MonthsInYear) \ + V(inLeapYear, InLeapYear) \ + V(offsetNanoseconds, OffsetNanoseconds) \ + V(offset, Offset) + +#define INSTALL_ZONED_DATE_TIME_GETTER_FUNC(p, N) \ + SimpleInstallGetter(isolate(), prototype, isolate_->factory()->p##_string(), \ + Builtin::kTemporalZonedDateTimePrototype##N, true); + + ZONED_DATE_TIME_GETTER_LIST(INSTALL_ZONED_DATE_TIME_GETTER_FUNC) +#undef ZONED_DATE_TIME_GETTER_LIST +#undef ZONED_DATE_TIME_GETTER_LIST_INTL +#undef INSTALL_ZONED_DATE_TIME_GETTER_FUNC + +#define ZONED_DATE_TIME_FUNC_LIST(V) \ + V(with, With, 1) \ + V(withPlainTime, WithPlainTime, 0) \ + V(withPlainDate, WithPlainDate, 1) \ + V(withTimeZone, WithTimeZone, 1) \ + V(withCalendar, WithCalendar, 1) \ + V(add, Add, 1) \ + V(subtract, Subtract, 1) \ + V(until, Until, 1) \ + V(since, Since, 1) \ + V(round, Round, 1) \ + V(equals, Equals, 1) \ + V(toString, ToString, 0) \ + V(toJSON, ToJSON, 0) \ + V(valueOf, ValueOf, 0) \ + V(startOfDay, StartOfDay, 0) \ + V(toInstant, ToInstant, 0) \ + V(toPlainDate, ToPlainDate, 0) \ + V(toPlainTime, ToPlainTime, 0) \ + V(toPlainDateTime, ToPlainDateTime, 0) \ + V(toPlainYearMonth, ToPlainYearMonth, 0) \ + V(toPlainMonthDay, ToPlainMonthDay, 0) \ + V(getISOFields, GetISOFields, 0) + +#define INSTALL_ZONED_DATE_TIME_FUNC(p, N, min) \ + SimpleInstallFunction(isolate(), prototype, #p, \ + Builtin::kTemporalZonedDateTimePrototype##N, min, \ + false); + ZONED_DATE_TIME_FUNC_LIST(INSTALL_ZONED_DATE_TIME_FUNC) +#undef ZONED_DATE_TIME_FUNC_LIST +#undef INSTALL_ZONED_DATE_TIME_FUNC + + INSTALL_TO_LOCALE_STRING_FUNC(ZonedDateTime) + } + { // -- D u r a t i o n + // #sec-temporal-duration-objects + // #sec-temporal.duration + INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE(Duration, DURATION, 0) + INSTALL_TEMPORAL_FUNC(Duration, from, From, 1) + INSTALL_TEMPORAL_FUNC(Duration, compare, Compare, 2) + +#define DURATION_GETTER_LIST(V) \ + V(years, Years) \ + V(months, Months) \ + V(weeks, Weeks) \ + V(days, Days) \ + V(hours, Hours) \ + V(minutes, Minutes) \ + V(seconds, Seconds) \ + V(milliseconds, Milliseconds) \ + V(microseconds, Microseconds) \ + V(nanoseconds, Nanoseconds) \ + V(sign, Sign) \ + V(blank, Blank) + +#define INSTALL_DURATION_GETTER_FUNC(p, N) \ + SimpleInstallGetter(isolate(), prototype, isolate_->factory()->p##_string(), \ + Builtin::kTemporalDurationPrototype##N, true); + + DURATION_GETTER_LIST(INSTALL_DURATION_GETTER_FUNC) +#undef DURATION_GETTER_LIST +#undef INSTALL_DURATION_GETTER_FUNC + +#define DURATION_FUNC_LIST(V) \ + V(with, With, 1) \ + V(negated, Negated, 0) \ + V(abs, Abs, 0) \ + V(add, Add, 1) \ + V(subtract, Subtract, 1) \ + V(round, Round, 1) \ + V(total, Total, 1) \ + V(toString, ToString, 0) \ + V(toJSON, ToJSON, 0) \ + V(valueOf, ValueOf, 0) + +#define INSTALL_DURATION_FUNC(p, N, min) \ + SimpleInstallFunction(isolate(), prototype, #p, \ + Builtin::kTemporalDurationPrototype##N, min, false); + DURATION_FUNC_LIST(INSTALL_DURATION_FUNC) +#undef DURATION_FUNC_LIST +#undef INSTALL_DURATION_FUNC + + INSTALL_TO_LOCALE_STRING_FUNC(Duration) + } + { // -- I n s t a n t + // #sec-temporal-instant-objects + // #sec-temporal.instant + INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE(Instant, INSTANT, 1) + INSTALL_TEMPORAL_FUNC(Instant, from, From, 1) + INSTALL_TEMPORAL_FUNC(Instant, compare, Compare, 2) + INSTALL_TEMPORAL_FUNC(Instant, fromEpochSeconds, FromEpochSeconds, 1) + INSTALL_TEMPORAL_FUNC(Instant, fromEpochMilliseconds, FromEpochMilliseconds, + 1) + INSTALL_TEMPORAL_FUNC(Instant, fromEpochMicroseconds, FromEpochMicroseconds, + 1) + INSTALL_TEMPORAL_FUNC(Instant, fromEpochNanoseconds, FromEpochNanoseconds, + 1) + +#define INSTANT_GETTER_LIST(V) \ + V(epochSeconds, EpochSeconds) \ + V(epochMilliseconds, EpochMilliseconds) \ + V(epochMicroseconds, EpochMicroseconds) \ + V(epochNanoseconds, EpochNanoseconds) + +#define INSTALL_INSTANT_GETTER_FUNC(p, N) \ + SimpleInstallGetter(isolate(), prototype, isolate_->factory()->p##_string(), \ + Builtin::kTemporalInstantPrototype##N, true); + + INSTANT_GETTER_LIST(INSTALL_INSTANT_GETTER_FUNC) +#undef INSTANT_GETTER_LIST +#undef INSTALL_INSTANT_GETTER_FUNC + +#define INSTANT_FUNC_LIST(V) \ + V(add, Add, 1) \ + V(subtract, Subtract, 1) \ + V(until, Until, 1) \ + V(since, Since, 1) \ + V(round, Round, 1) \ + V(equals, Equals, 1) \ + V(toString, ToString, 0) \ + V(toJSON, ToJSON, 0) \ + V(valueOf, ValueOf, 0) \ + V(toZonedDateTime, ToZonedDateTime, 1) \ + V(toZonedDateTimeISO, ToZonedDateTimeISO, 1) + +#define INSTALL_INSTANT_FUNC(p, N, min) \ + SimpleInstallFunction(isolate(), prototype, #p, \ + Builtin::kTemporalInstantPrototype##N, min, false); + INSTANT_FUNC_LIST(INSTALL_INSTANT_FUNC) +#undef INSTANT_FUNC_LIST +#undef INSTALL_INSTANT_FUNC + + INSTALL_TO_LOCALE_STRING_FUNC(Instant) + } + { // -- P l a i n Y e a r M o n t h + // #sec-temporal-plainyearmonth-objects + // #sec-temporal.plainyearmonth + INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE(PlainYearMonth, PLAIN_YEAR_MONTH, 2) + INSTALL_TEMPORAL_FUNC(PlainYearMonth, from, From, 1) + INSTALL_TEMPORAL_FUNC(PlainYearMonth, compare, Compare, 2) + +#ifdef V8_INTL_SUPPORT +#define PLAIN_YEAR_MONTH_GETTER_LIST_INTL(V) \ + V(era, Era) \ + V(eraYear, EraYear) +#else +#define PLAIN_YEAR_MONTH_GETTER_LIST_INTL(V) +#endif // V8_INTL_SUPPORT + +#define PLAIN_YEAR_MONTH_GETTER_LIST(V) \ + PLAIN_YEAR_MONTH_GETTER_LIST_INTL(V) \ + V(calendar, Calendar) \ + V(year, Year) \ + V(month, Month) \ + V(monthCode, MonthCode) \ + V(daysInYear, DaysInYear) \ + V(daysInMonth, DaysInMonth) \ + V(monthsInYear, MonthsInYear) \ + V(inLeapYear, InLeapYear) + +#define INSTALL_PLAIN_YEAR_MONTH_GETTER_FUNC(p, N) \ + SimpleInstallGetter(isolate(), prototype, isolate_->factory()->p##_string(), \ + Builtin::kTemporalPlainYearMonthPrototype##N, true); + + PLAIN_YEAR_MONTH_GETTER_LIST(INSTALL_PLAIN_YEAR_MONTH_GETTER_FUNC) +#undef PLAIN_YEAR_MONTH_GETTER_LIST +#undef PLAIN_YEAR_MONTH_GETTER_LIST_INTL +#undef INSTALL_PLAIN_YEAR_MONTH_GETTER_FUNC + +#define PLAIN_YEAR_MONTH_FUNC_LIST(V) \ + V(with, With, 1) \ + V(add, Add, 1) \ + V(subtract, Subtract, 1) \ + V(until, Until, 1) \ + V(since, Since, 1) \ + V(equals, Equals, 1) \ + V(toString, ToString, 0) \ + V(toJSON, ToJSON, 0) \ + V(valueOf, ValueOf, 0) \ + V(toPlainDate, ToPlainDate, 1) \ + V(getISOFields, GetISOFields, 0) + +#define INSTALL_PLAIN_YEAR_MONTH_FUNC(p, N, min) \ + SimpleInstallFunction(isolate(), prototype, #p, \ + Builtin::kTemporalPlainYearMonthPrototype##N, min, \ + false); + PLAIN_YEAR_MONTH_FUNC_LIST(INSTALL_PLAIN_YEAR_MONTH_FUNC) +#undef PLAIN_YEAR_MONTH_FUNC_LIST +#undef INSTALL_PLAIN_YEAR_MONTH_FUNC + + INSTALL_TO_LOCALE_STRING_FUNC(PlainYearMonth) + } + { // -- P l a i n M o n t h D a y + // #sec-temporal-plainmonthday-objects + // #sec-temporal.plainmonthday + INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE(PlainMonthDay, PLAIN_MONTH_DAY, 2) + INSTALL_TEMPORAL_FUNC(PlainMonthDay, from, From, 1) + // Notice there are no Temporal.PlainMonthDay.compare in the spec. + +#define PLAIN_MONTH_DAY_GETTER_LIST(V) \ + V(calendar, Calendar) \ + V(monthCode, MonthCode) \ + V(day, Day) + +#define INSTALL_PLAIN_MONTH_DAY_GETTER_FUNC(p, N) \ + SimpleInstallGetter(isolate(), prototype, isolate_->factory()->p##_string(), \ + Builtin::kTemporalPlainMonthDayPrototype##N, true); + + PLAIN_MONTH_DAY_GETTER_LIST(INSTALL_PLAIN_MONTH_DAY_GETTER_FUNC) +#undef PLAIN_MONTH_DAY_GETTER_LIST +#undef INSTALL_PLAIN_MONTH_DAY_GETTER_FUNC + +#define PLAIN_MONTH_DAY_FUNC_LIST(V) \ + V(with, With, 1) \ + V(equals, Equals, 1) \ + V(toString, ToString, 0) \ + V(toJSON, ToJSON, 0) \ + V(valueOf, ValueOf, 0) \ + V(toPlainDate, ToPlainDate, 1) \ + V(getISOFields, GetISOFields, 0) + +#define INSTALL_PLAIN_MONTH_DAY_FUNC(p, N, min) \ + SimpleInstallFunction(isolate(), prototype, #p, \ + Builtin::kTemporalPlainMonthDayPrototype##N, min, \ + false); + PLAIN_MONTH_DAY_FUNC_LIST(INSTALL_PLAIN_MONTH_DAY_FUNC) +#undef PLAIN_MONTH_DAY_FUNC_LIST +#undef INSTALL_PLAIN_MONTH_DAY_FUNC + + INSTALL_TO_LOCALE_STRING_FUNC(PlainMonthDay) + } +#undef INSTALL_TO_LOCALE_STRING_FUNC + { // -- T i m e Z o n e + // #sec-temporal-timezone-objects + // #sec-temporal.timezone + INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE(TimeZone, TIME_ZONE, 1) + INSTALL_TEMPORAL_FUNC(TimeZone, from, From, 1) + + // #sec-get-temporal.timezone.prototype.id + SimpleInstallGetter(isolate(), prototype, factory()->id_string(), + Builtin::kTemporalTimeZonePrototypeId, true); + +#define TIME_ZONE_FUNC_LIST(V) \ + V(getOffsetNanosecondsFor, GetOffsetNanosecondsFor, 1) \ + V(getOffsetStringFor, GetOffsetStringFor, 1) \ + V(getPlainDateTimeFor, GetPlainDateTimeFor, 1) \ + V(getInstantFor, GetInstantFor, 1) \ + V(getPossibleInstantsFor, GetPossibleInstantsFor, 1) \ + V(getNextTransition, GetNextTransition, 1) \ + V(getPreviousTransition, GetPreviousTransition, 1) \ + V(toString, ToString, 0) \ + V(toJSON, ToJSON, 0) + +#define INSTALL_TIME_ZONE_FUNC(p, N, min) \ + SimpleInstallFunction(isolate(), prototype, #p, \ + Builtin::kTemporalTimeZonePrototype##N, min, false); + TIME_ZONE_FUNC_LIST(INSTALL_TIME_ZONE_FUNC) +#undef TIME_ZONE_FUNC_LIST +#undef INSTALL_TIME_ZONE_FUNC + } + { // -- C a l e n d a r + // #sec-temporal-calendar-objects + // #sec-temporal.calendar + INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE(Calendar, CALENDAR, 1) + INSTALL_TEMPORAL_FUNC(Calendar, from, From, 1) + + // #sec-get-temporal.calendar.prototype.id + SimpleInstallGetter(isolate(), prototype, factory()->id_string(), + Builtin::kTemporalCalendarPrototypeId, true); + +#ifdef V8_INTL_SUPPORT +#define CALENDAR_FUNC_LIST_INTL(V) \ + V(era, Era, 1) \ + V(eraYear, EraYear, 1) +#else +#define CALENDAR_FUNC_LIST_INTL(V) +#endif // V8_INTL_SUPPORT + +#define CALENDAR_FUNC_LIST(V) \ + CALENDAR_FUNC_LIST_INTL(V) \ + V(dateFromFields, DateFromFields, 1) \ + V(yearMonthFromFields, YearMonthFromFields, 1) \ + V(monthDayFromFields, MonthDayFromFields, 1) \ + V(dateAdd, DateAdd, 2) \ + V(dateUntil, DateUntil, 2) \ + V(year, Year, 1) \ + V(month, Month, 1) \ + V(monthCode, MonthCode, 1) \ + V(day, Day, 1) \ + V(dayOfWeek, DayOfWeek, 1) \ + V(dayOfYear, DayOfYear, 1) \ + V(weekOfYear, WeekOfYear, 1) \ + V(daysInWeek, DaysInWeek, 1) \ + V(daysInMonth, DaysInMonth, 1) \ + V(daysInYear, DaysInYear, 1) \ + V(monthsInYear, MonthsInYear, 1) \ + V(inLeapYear, InLeapYear, 1) \ + V(fields, Fields, 1) \ + V(mergeFields, MergeFields, 2) \ + V(toString, ToString, 0) \ + V(toJSON, ToJSON, 0) + +#define INSTALL_CALENDAR_FUNC(p, N, min) \ + SimpleInstallFunction(isolate(), prototype, #p, \ + Builtin::kTemporalCalendarPrototype##N, min, false); + CALENDAR_FUNC_LIST(INSTALL_CALENDAR_FUNC) +#undef CALENDAR_FUNC_LIST +#undef CALENDAR_FUNC_LIST_INTL +#undef INSTALL_CALENDAE_FUNC + } +#undef INSTALL_TEMPORAL_CTOR_AND_PROTOTYPE +#undef INSTALL_TEMPORAL_FUNC +} + #ifdef V8_INTL_SUPPORT void Genesis::InitializeGlobal_harmony_intl_locale_info() { diff --git a/src/init/heap-symbols.h b/src/init/heap-symbols.h index f30192526e..f8af775712 100644 --- a/src/init/heap-symbols.h +++ b/src/init/heap-symbols.h @@ -11,7 +11,6 @@ V(_, baseName_string, "baseName") \ V(_, accounting_string, "accounting") \ V(_, breakType_string, "breakType") \ - V(_, calendar_string, "calendar") \ V(_, calendars_string, "calendars") \ V(_, cardinal_string, "cardinal") \ V(_, caseFirst_string, "caseFirst") \ @@ -25,7 +24,6 @@ V(_, currencySign_string, "currencySign") \ V(_, dateStyle_string, "dateStyle") \ V(_, dateTimeField_string, "dateTimeField") \ - V(_, day_string, "day") \ V(_, dayPeriod_string, "dayPeriod") \ V(_, decimal_string, "decimal") \ V(_, dialect_string, "dialect") \ @@ -33,6 +31,7 @@ V(_, endRange_string, "endRange") \ V(_, engineering_string, "engineering") \ V(_, era_string, "era") \ + V(_, eraYear_string, "eraYear") \ V(_, exceptZero_string, "exceptZero") \ V(_, exponentInteger_string, "exponentInteger") \ V(_, exponentMinusSign_string, "exponentMinusSign") \ @@ -52,7 +51,6 @@ V(_, h12_string, "h12") \ V(_, h23_string, "h23") \ V(_, h24_string, "h24") \ - V(_, hour_string, "hour") \ V(_, hour12_string, "hour12") \ V(_, hourCycle_string, "hourCycle") \ V(_, hourCycles_string, "hourCycles") \ @@ -78,8 +76,6 @@ V(_, minimumIntegerDigits_string, "minimumIntegerDigits") \ V(_, minimumSignificantDigits_string, "minimumSignificantDigits") \ V(_, minusSign_string, "minusSign") \ - V(_, minute_string, "minute") \ - V(_, month_string, "month") \ V(_, nan_string, "nan") \ V(_, narrowSymbol_string, "narrowSymbol") \ V(_, never_string, "never") \ @@ -97,7 +93,6 @@ V(_, relatedYear_string, "relatedYear") \ V(_, rtl_string, "rtl") \ V(_, scientific_string, "scientific") \ - V(_, second_string, "second") \ V(_, segment_string, "segment") \ V(_, SegmentIterator_string, "Segment Iterator") \ V(_, Segments_string, "Segments") \ @@ -112,7 +107,6 @@ V(_, term_string, "term") \ V(_, textInfo_string, "textInfo") \ V(_, timeStyle_string, "timeStyle") \ - V(_, timeZone_string, "timeZone") \ V(_, timeZones_string, "timeZones") \ V(_, timeZoneName_string, "timeZoneName") \ V(_, type_string, "type") \ @@ -120,241 +114,304 @@ V(_, upper_string, "upper") \ V(_, usage_string, "usage") \ V(_, useGrouping_string, "useGrouping") \ - V(_, UTC_string, "UTC") \ - V(_, unit_string, "unit") \ V(_, unitDisplay_string, "unitDisplay") \ V(_, weekday_string, "weekday") \ V(_, weekendEnd_string, "weekendEnd") \ V(_, weekendStart_string, "weekendStart") \ V(_, weekInfo_string, "weekInfo") \ - V(_, year_string, "year") \ V(_, yearName_string, "yearName") #else // V8_INTL_SUPPORT #define INTERNALIZED_STRING_LIST_GENERATOR_INTL(V, _) #endif // V8_INTL_SUPPORT -#define INTERNALIZED_STRING_LIST_GENERATOR(V, _) \ - INTERNALIZED_STRING_LIST_GENERATOR_INTL(V, _) \ - V(_, add_string, "add") \ - V(_, AggregateError_string, "AggregateError") \ - V(_, always_string, "always") \ - V(_, anonymous_function_string, "(anonymous function)") \ - V(_, anonymous_string, "anonymous") \ - V(_, apply_string, "apply") \ - V(_, Arguments_string, "Arguments") \ - V(_, arguments_string, "arguments") \ - V(_, arguments_to_string, "[object Arguments]") \ - V(_, Array_string, "Array") \ - V(_, array_to_string, "[object Array]") \ - V(_, ArrayBuffer_string, "ArrayBuffer") \ - V(_, ArrayIterator_string, "Array Iterator") \ - V(_, as_string, "as") \ - V(_, assert_string, "assert") \ - V(_, async_string, "async") \ - V(_, auto_string, "auto") \ - V(_, await_string, "await") \ - V(_, BigInt_string, "BigInt") \ - V(_, bigint_string, "bigint") \ - V(_, BigInt64Array_string, "BigInt64Array") \ - V(_, BigUint64Array_string, "BigUint64Array") \ - V(_, bind_string, "bind") \ - V(_, Boolean_string, "Boolean") \ - V(_, boolean_string, "boolean") \ - V(_, boolean_to_string, "[object Boolean]") \ - V(_, bound__string, "bound ") \ - V(_, buffer_string, "buffer") \ - V(_, byte_length_string, "byteLength") \ - V(_, byte_offset_string, "byteOffset") \ - V(_, CompileError_string, "CompileError") \ - V(_, callee_string, "callee") \ - V(_, caller_string, "caller") \ - V(_, cause_string, "cause") \ - V(_, character_string, "character") \ - V(_, closure_string, "(closure)") \ - V(_, code_string, "code") \ - V(_, column_string, "column") \ - V(_, computed_string, "") \ - V(_, configurable_string, "configurable") \ - V(_, conjunction_string, "conjunction") \ - V(_, construct_string, "construct") \ - V(_, constructor_string, "constructor") \ - V(_, current_string, "current") \ - V(_, Date_string, "Date") \ - V(_, date_to_string, "[object Date]") \ - V(_, default_string, "default") \ - V(_, defineProperty_string, "defineProperty") \ - V(_, deleteProperty_string, "deleteProperty") \ - V(_, disjunction_string, "disjunction") \ - V(_, done_string, "done") \ - V(_, dot_brand_string, ".brand") \ - V(_, dot_catch_string, ".catch") \ - V(_, dot_default_string, ".default") \ - V(_, dot_for_string, ".for") \ - V(_, dot_generator_object_string, ".generator_object") \ - V(_, dot_home_object_string, ".home_object") \ - V(_, dot_result_string, ".result") \ - V(_, dot_repl_result_string, ".repl_result") \ - V(_, dot_static_home_object_string, "._static_home_object") \ - V(_, dot_string, ".") \ - V(_, dot_switch_tag_string, ".switch_tag") \ - V(_, dotAll_string, "dotAll") \ - V(_, Error_string, "Error") \ - V(_, EvalError_string, "EvalError") \ - V(_, element_string, "element") \ - V(_, enumerable_string, "enumerable") \ - V(_, error_to_string, "[object Error]") \ - V(_, errors_string, "errors") \ - V(_, eval_string, "eval") \ - V(_, exception_string, "exception") \ - V(_, exec_string, "exec") \ - V(_, false_string, "false") \ - V(_, FinalizationRegistry_string, "FinalizationRegistry") \ - V(_, flags_string, "flags") \ - V(_, Float32Array_string, "Float32Array") \ - V(_, Float64Array_string, "Float64Array") \ - V(_, from_string, "from") \ - V(_, Function_string, "Function") \ - V(_, function_native_code_string, "function () { [native code] }") \ - V(_, function_string, "function") \ - V(_, function_to_string, "[object Function]") \ - V(_, Generator_string, "Generator") \ - V(_, get_space_string, "get ") \ - V(_, get_string, "get") \ - V(_, getOwnPropertyDescriptor_string, "getOwnPropertyDescriptor") \ - V(_, getPrototypeOf_string, "getPrototypeOf") \ - V(_, global_string, "global") \ - V(_, globalThis_string, "globalThis") \ - V(_, groups_string, "groups") \ - V(_, growable_string, "growable") \ - V(_, has_string, "has") \ - V(_, hasIndices_string, "hasIndices") \ - V(_, ignoreCase_string, "ignoreCase") \ - V(_, illegal_access_string, "illegal access") \ - V(_, illegal_argument_string, "illegal argument") \ - V(_, index_string, "index") \ - V(_, indices_string, "indices") \ - V(_, Infinity_string, "Infinity") \ - V(_, infinity_string, "infinity") \ - V(_, input_string, "input") \ - V(_, Int16Array_string, "Int16Array") \ - V(_, Int32Array_string, "Int32Array") \ - V(_, Int8Array_string, "Int8Array") \ - V(_, isExtensible_string, "isExtensible") \ - V(_, jsMemoryEstimate_string, "jsMemoryEstimate") \ - V(_, jsMemoryRange_string, "jsMemoryRange") \ - V(_, keys_string, "keys") \ - V(_, lastIndex_string, "lastIndex") \ - V(_, length_string, "length") \ - V(_, let_string, "let") \ - V(_, line_string, "line") \ - V(_, linear_string, "linear") \ - V(_, LinkError_string, "LinkError") \ - V(_, long_string, "long") \ - V(_, Map_string, "Map") \ - V(_, MapIterator_string, "Map Iterator") \ - V(_, max_byte_length_string, "maxByteLength") \ - V(_, medium_string, "medium") \ - V(_, message_string, "message") \ - V(_, meta_string, "meta") \ - V(_, minus_Infinity_string, "-Infinity") \ - V(_, Module_string, "Module") \ - V(_, multiline_string, "multiline") \ - V(_, name_string, "name") \ - V(_, NaN_string, "NaN") \ - V(_, narrow_string, "narrow") \ - V(_, native_string, "native") \ - V(_, new_target_string, ".new.target") \ - V(_, next_string, "next") \ - V(_, NFC_string, "NFC") \ - V(_, NFD_string, "NFD") \ - V(_, NFKC_string, "NFKC") \ - V(_, NFKD_string, "NFKD") \ - V(_, not_equal_string, "not-equal") \ - V(_, null_string, "null") \ - V(_, null_to_string, "[object Null]") \ - V(_, Number_string, "Number") \ - V(_, number_string, "number") \ - V(_, number_to_string, "[object Number]") \ - V(_, Object_string, "Object") \ - V(_, object_string, "object") \ - V(_, object_to_string, "[object Object]") \ - V(_, of_string, "of") \ - V(_, ok_string, "ok") \ - V(_, one_string, "1") \ - V(_, other_string, "other") \ - V(_, ownKeys_string, "ownKeys") \ - V(_, percent_string, "percent") \ - V(_, position_string, "position") \ - V(_, preventExtensions_string, "preventExtensions") \ - V(_, private_constructor_string, "#constructor") \ - V(_, Promise_string, "Promise") \ - V(_, proto_string, "__proto__") \ - V(_, prototype_string, "prototype") \ - V(_, proxy_string, "proxy") \ - V(_, Proxy_string, "Proxy") \ - V(_, query_colon_string, "(?:)") \ - V(_, RangeError_string, "RangeError") \ - V(_, raw_string, "raw") \ - V(_, ReferenceError_string, "ReferenceError") \ - V(_, ReflectGet_string, "Reflect.get") \ - V(_, ReflectHas_string, "Reflect.has") \ - V(_, RegExp_string, "RegExp") \ - V(_, regexp_to_string, "[object RegExp]") \ - V(_, resizable_string, "resizable") \ - V(_, resolve_string, "resolve") \ - V(_, return_string, "return") \ - V(_, revoke_string, "revoke") \ - V(_, RuntimeError_string, "RuntimeError") \ - V(_, WebAssemblyException_string, "WebAssembly.Exception") \ - V(_, Script_string, "Script") \ - V(_, script_string, "script") \ - V(_, short_string, "short") \ - V(_, Set_string, "Set") \ - V(_, sentence_string, "sentence") \ - V(_, set_space_string, "set ") \ - V(_, set_string, "set") \ - V(_, SetIterator_string, "Set Iterator") \ - V(_, setPrototypeOf_string, "setPrototypeOf") \ - V(_, SharedArrayBuffer_string, "SharedArrayBuffer") \ - V(_, source_string, "source") \ - V(_, sourceText_string, "sourceText") \ - V(_, stack_string, "stack") \ - V(_, stackTraceLimit_string, "stackTraceLimit") \ - V(_, sticky_string, "sticky") \ - V(_, String_string, "String") \ - V(_, string_string, "string") \ - V(_, string_to_string, "[object String]") \ - V(_, symbol_species_string, "[Symbol.species]") \ - V(_, Symbol_string, "Symbol") \ - V(_, symbol_string, "symbol") \ - V(_, SyntaxError_string, "SyntaxError") \ - V(_, target_string, "target") \ - V(_, then_string, "then") \ - V(_, this_function_string, ".this_function") \ - V(_, this_string, "this") \ - V(_, throw_string, "throw") \ - V(_, timed_out_string, "timed-out") \ - V(_, toJSON_string, "toJSON") \ - V(_, toString_string, "toString") \ - V(_, true_string, "true") \ - V(_, total_string, "total") \ - V(_, TypeError_string, "TypeError") \ - V(_, Uint16Array_string, "Uint16Array") \ - V(_, Uint32Array_string, "Uint32Array") \ - V(_, Uint8Array_string, "Uint8Array") \ - V(_, Uint8ClampedArray_string, "Uint8ClampedArray") \ - V(_, undefined_string, "undefined") \ - V(_, undefined_to_string, "[object Undefined]") \ - V(_, unicode_string, "unicode") \ - V(_, URIError_string, "URIError") \ - V(_, value_string, "value") \ - V(_, valueOf_string, "valueOf") \ - V(_, WeakMap_string, "WeakMap") \ - V(_, WeakRef_string, "WeakRef") \ - V(_, WeakSet_string, "WeakSet") \ - V(_, week_string, "week") \ - V(_, word_string, "word") \ - V(_, writable_string, "writable") \ +#define INTERNALIZED_STRING_LIST_GENERATOR(V, _) \ + INTERNALIZED_STRING_LIST_GENERATOR_INTL(V, _) \ + V(_, add_string, "add") \ + V(_, AggregateError_string, "AggregateError") \ + V(_, always_string, "always") \ + V(_, anonymous_function_string, "(anonymous function)") \ + V(_, anonymous_string, "anonymous") \ + V(_, apply_string, "apply") \ + V(_, Arguments_string, "Arguments") \ + V(_, arguments_string, "arguments") \ + V(_, arguments_to_string, "[object Arguments]") \ + V(_, Array_string, "Array") \ + V(_, array_to_string, "[object Array]") \ + V(_, ArrayBuffer_string, "ArrayBuffer") \ + V(_, ArrayIterator_string, "Array Iterator") \ + V(_, as_string, "as") \ + V(_, assert_string, "assert") \ + V(_, async_string, "async") \ + V(_, auto_string, "auto") \ + V(_, await_string, "await") \ + V(_, BigInt_string, "BigInt") \ + V(_, bigint_string, "bigint") \ + V(_, BigInt64Array_string, "BigInt64Array") \ + V(_, BigUint64Array_string, "BigUint64Array") \ + V(_, bind_string, "bind") \ + V(_, blank_string, "blank") \ + V(_, Boolean_string, "Boolean") \ + V(_, boolean_string, "boolean") \ + V(_, boolean_to_string, "[object Boolean]") \ + V(_, bound__string, "bound ") \ + V(_, buffer_string, "buffer") \ + V(_, byte_length_string, "byteLength") \ + V(_, byte_offset_string, "byteOffset") \ + V(_, CompileError_string, "CompileError") \ + V(_, calendar_string, "calendar") \ + V(_, callee_string, "callee") \ + V(_, caller_string, "caller") \ + V(_, cause_string, "cause") \ + V(_, character_string, "character") \ + V(_, closure_string, "(closure)") \ + V(_, code_string, "code") \ + V(_, column_string, "column") \ + V(_, computed_string, "") \ + V(_, configurable_string, "configurable") \ + V(_, conjunction_string, "conjunction") \ + V(_, construct_string, "construct") \ + V(_, constructor_string, "constructor") \ + V(_, current_string, "current") \ + V(_, Date_string, "Date") \ + V(_, date_to_string, "[object Date]") \ + V(_, dateAdd_string, "dateAdd") \ + V(_, dateFromFields_string, "dateFromFields") \ + V(_, dateUntil_string, "dateUntil") \ + V(_, day_string, "day") \ + V(_, dayOfWeek_string, "dayOfWeek") \ + V(_, dayOfYear_string, "dayOfYear") \ + V(_, days_string, "days") \ + V(_, daysInMonth_string, "daysInMonth") \ + V(_, daysInWeek_string, "daysInWeek") \ + V(_, daysInYear_string, "daysInYear") \ + V(_, default_string, "default") \ + V(_, defineProperty_string, "defineProperty") \ + V(_, deleteProperty_string, "deleteProperty") \ + V(_, disjunction_string, "disjunction") \ + V(_, done_string, "done") \ + V(_, dot_brand_string, ".brand") \ + V(_, dot_catch_string, ".catch") \ + V(_, dot_default_string, ".default") \ + V(_, dot_for_string, ".for") \ + V(_, dot_generator_object_string, ".generator_object") \ + V(_, dot_home_object_string, ".home_object") \ + V(_, dot_result_string, ".result") \ + V(_, dot_repl_result_string, ".repl_result") \ + V(_, dot_static_home_object_string, "._static_home_object") \ + V(_, dot_string, ".") \ + V(_, dot_switch_tag_string, ".switch_tag") \ + V(_, dotAll_string, "dotAll") \ + V(_, Error_string, "Error") \ + V(_, EvalError_string, "EvalError") \ + V(_, enumerable_string, "enumerable") \ + V(_, element_string, "element") \ + V(_, epochMicroseconds_string, "epochMicroseconds") \ + V(_, epochMilliseconds_string, "epochMilliseconds") \ + V(_, epochNanoseconds_string, "epochNanoseconds") \ + V(_, epochSeconds_string, "epochSeconds") \ + V(_, errors_string, "errors") \ + V(_, error_to_string, "[object Error]") \ + V(_, eval_string, "eval") \ + V(_, exception_string, "exception") \ + V(_, exec_string, "exec") \ + V(_, false_string, "false") \ + V(_, fields_string, "fields") \ + V(_, FinalizationRegistry_string, "FinalizationRegistry") \ + V(_, flags_string, "flags") \ + V(_, Float32Array_string, "Float32Array") \ + V(_, Float64Array_string, "Float64Array") \ + V(_, from_string, "from") \ + V(_, Function_string, "Function") \ + V(_, function_native_code_string, "function () { [native code] }") \ + V(_, function_string, "function") \ + V(_, function_to_string, "[object Function]") \ + V(_, Generator_string, "Generator") \ + V(_, get_space_string, "get ") \ + V(_, get_string, "get") \ + V(_, getOffsetNanosecondsFor_string, "getOffsetNanosecondsFor") \ + V(_, getOwnPropertyDescriptor_string, "getOwnPropertyDescriptor") \ + V(_, getPrototypeOf_string, "getPrototypeOf") \ + V(_, global_string, "global") \ + V(_, globalThis_string, "globalThis") \ + V(_, groups_string, "groups") \ + V(_, growable_string, "growable") \ + V(_, GrowableSharedArrayBuffer_string, "GrowableSharedArrayBuffer") \ + V(_, has_string, "has") \ + V(_, hasIndices_string, "hasIndices") \ + V(_, hour_string, "hour") \ + V(_, hours_string, "hours") \ + V(_, hoursInDay_string, "hoursInDay") \ + V(_, ignoreCase_string, "ignoreCase") \ + V(_, id_string, "id") \ + V(_, illegal_access_string, "illegal access") \ + V(_, illegal_argument_string, "illegal argument") \ + V(_, inLeapYear_string, "inLeapYear") \ + V(_, index_string, "index") \ + V(_, indices_string, "indices") \ + V(_, Infinity_string, "Infinity") \ + V(_, infinity_string, "infinity") \ + V(_, input_string, "input") \ + V(_, Int16Array_string, "Int16Array") \ + V(_, Int32Array_string, "Int32Array") \ + V(_, Int8Array_string, "Int8Array") \ + V(_, isExtensible_string, "isExtensible") \ + V(_, iso8601_string, "iso8601") \ + V(_, isoDay_string, "isoDay") \ + V(_, isoHour_string, "isoHour") \ + V(_, isoMicrosecond_string, "isoMicrosecond") \ + V(_, isoMillisecond_string, "isoMillisecond") \ + V(_, isoMinute_string, "isoMinute") \ + V(_, isoMonth_string, "isoMonth") \ + V(_, isoNanosecond_string, "isoNanosecond") \ + V(_, isoSecond_string, "isoSecond") \ + V(_, isoYear_string, "isoYear") \ + V(_, jsMemoryEstimate_string, "jsMemoryEstimate") \ + V(_, jsMemoryRange_string, "jsMemoryRange") \ + V(_, keys_string, "keys") \ + V(_, largestUnit_string, "largestUnit") \ + V(_, lastIndex_string, "lastIndex") \ + V(_, length_string, "length") \ + V(_, let_string, "let") \ + V(_, line_string, "line") \ + V(_, linear_string, "linear") \ + V(_, LinkError_string, "LinkError") \ + V(_, long_string, "long") \ + V(_, Map_string, "Map") \ + V(_, MapIterator_string, "Map Iterator") \ + V(_, max_byte_length_string, "maxByteLength") \ + V(_, medium_string, "medium") \ + V(_, mergeFields_string, "mergeFields") \ + V(_, message_string, "message") \ + V(_, meta_string, "meta") \ + V(_, minus_Infinity_string, "-Infinity") \ + V(_, microsecond_string, "microsecond") \ + V(_, microseconds_string, "microseconds") \ + V(_, millisecond_string, "millisecond") \ + V(_, milliseconds_string, "milliseconds") \ + V(_, minute_string, "minute") \ + V(_, minutes_string, "minutes") \ + V(_, Module_string, "Module") \ + V(_, month_string, "month") \ + V(_, monthDayFromFields_string, "monthDayFromFields") \ + V(_, months_string, "months") \ + V(_, monthsInYear_string, "monthsInYear") \ + V(_, monthCode_string, "monthCode") \ + V(_, multiline_string, "multiline") \ + V(_, name_string, "name") \ + V(_, NaN_string, "NaN") \ + V(_, nanosecond_string, "nanosecond") \ + V(_, nanoseconds_string, "nanoseconds") \ + V(_, narrow_string, "narrow") \ + V(_, native_string, "native") \ + V(_, new_target_string, ".new.target") \ + V(_, next_string, "next") \ + V(_, NFC_string, "NFC") \ + V(_, NFD_string, "NFD") \ + V(_, NFKC_string, "NFKC") \ + V(_, NFKD_string, "NFKD") \ + V(_, not_equal_string, "not-equal") \ + V(_, null_string, "null") \ + V(_, null_to_string, "[object Null]") \ + V(_, Number_string, "Number") \ + V(_, number_string, "number") \ + V(_, number_to_string, "[object Number]") \ + V(_, Object_string, "Object") \ + V(_, object_string, "object") \ + V(_, object_to_string, "[object Object]") \ + V(_, of_string, "of") \ + V(_, offset_string, "offset") \ + V(_, offsetNanoseconds_string, "offsetNanoseconds") \ + V(_, ok_string, "ok") \ + V(_, one_string, "1") \ + V(_, other_string, "other") \ + V(_, overflow_string, "overflow") \ + V(_, ownKeys_string, "ownKeys") \ + V(_, percent_string, "percent") \ + V(_, position_string, "position") \ + V(_, preventExtensions_string, "preventExtensions") \ + V(_, private_constructor_string, "#constructor") \ + V(_, Promise_string, "Promise") \ + V(_, proto_string, "__proto__") \ + V(_, prototype_string, "prototype") \ + V(_, proxy_string, "proxy") \ + V(_, Proxy_string, "Proxy") \ + V(_, query_colon_string, "(?:)") \ + V(_, RangeError_string, "RangeError") \ + V(_, raw_string, "raw") \ + V(_, ReferenceError_string, "ReferenceError") \ + V(_, ReflectGet_string, "Reflect.get") \ + V(_, ReflectHas_string, "Reflect.has") \ + V(_, RegExp_string, "RegExp") \ + V(_, regexp_to_string, "[object RegExp]") \ + V(_, reject_string, "reject") \ + V(_, resizable_string, "resizable") \ + V(_, ResizableArrayBuffer_string, "ResizableArrayBuffer") \ + V(_, resolve_string, "resolve") \ + V(_, return_string, "return") \ + V(_, revoke_string, "revoke") \ + V(_, RuntimeError_string, "RuntimeError") \ + V(_, WebAssemblyException_string, "WebAssembly.Exception") \ + V(_, Script_string, "Script") \ + V(_, script_string, "script") \ + V(_, second_string, "second") \ + V(_, seconds_string, "seconds") \ + V(_, short_string, "short") \ + V(_, Set_string, "Set") \ + V(_, sentence_string, "sentence") \ + V(_, set_space_string, "set ") \ + V(_, set_string, "set") \ + V(_, SetIterator_string, "Set Iterator") \ + V(_, setPrototypeOf_string, "setPrototypeOf") \ + V(_, SharedArrayBuffer_string, "SharedArrayBuffer") \ + V(_, sign_string, "sign") \ + V(_, smallestUnit_string, "smallestUnit") \ + V(_, source_string, "source") \ + V(_, sourceText_string, "sourceText") \ + V(_, stack_string, "stack") \ + V(_, stackTraceLimit_string, "stackTraceLimit") \ + V(_, sticky_string, "sticky") \ + V(_, String_string, "String") \ + V(_, string_string, "string") \ + V(_, string_to_string, "[object String]") \ + V(_, symbol_species_string, "[Symbol.species]") \ + V(_, Symbol_string, "Symbol") \ + V(_, symbol_string, "symbol") \ + V(_, SyntaxError_string, "SyntaxError") \ + V(_, target_string, "target") \ + V(_, then_string, "then") \ + V(_, this_function_string, ".this_function") \ + V(_, this_string, "this") \ + V(_, throw_string, "throw") \ + V(_, timed_out_string, "timed-out") \ + V(_, timeZone_string, "timeZone") \ + V(_, toJSON_string, "toJSON") \ + V(_, toString_string, "toString") \ + V(_, true_string, "true") \ + V(_, total_string, "total") \ + V(_, TypeError_string, "TypeError") \ + V(_, Uint16Array_string, "Uint16Array") \ + V(_, Uint32Array_string, "Uint32Array") \ + V(_, Uint8Array_string, "Uint8Array") \ + V(_, Uint8ClampedArray_string, "Uint8ClampedArray") \ + V(_, undefined_string, "undefined") \ + V(_, undefined_to_string, "[object Undefined]") \ + V(_, unicode_string, "unicode") \ + V(_, unit_string, "unit") \ + V(_, URIError_string, "URIError") \ + V(_, UTC_string, "UTC") \ + V(_, value_string, "value") \ + V(_, valueOf_string, "valueOf") \ + V(_, WeakMap_string, "WeakMap") \ + V(_, WeakRef_string, "WeakRef") \ + V(_, WeakSet_string, "WeakSet") \ + V(_, week_string, "week") \ + V(_, weeks_string, "weeks") \ + V(_, weekOfYear_string, "weekOfYear") \ + V(_, word_string, "word") \ + V(_, writable_string, "writable") \ + V(_, yearMonthFromFields_string, "yearMonthFromFields") \ + V(_, year_string, "year") \ + V(_, years_string, "years") \ V(_, zero_string, "0") #define PRIVATE_SYMBOL_LIST_GENERATOR(V, _) \ diff --git a/src/objects/all-objects-inl.h b/src/objects/all-objects-inl.h index 5a78cefc8d..57fe58f9aa 100644 --- a/src/objects/all-objects-inl.h +++ b/src/objects/all-objects-inl.h @@ -46,6 +46,7 @@ #include "src/objects/js-proxy-inl.h" #include "src/objects/js-regexp-inl.h" #include "src/objects/js-regexp-string-iterator-inl.h" +#include "src/objects/js-temporal-objects-inl.h" #include "src/objects/js-weak-refs-inl.h" #include "src/objects/literal-objects-inl.h" #include "src/objects/lookup-cache-inl.h" diff --git a/src/objects/contexts.h b/src/objects/contexts.h index f3f41f9c52..3b096c9214 100644 --- a/src/objects/contexts.h +++ b/src/objects/contexts.h @@ -188,6 +188,25 @@ enum ContextLookupFlags { V(JS_WEAK_REF_FUNCTION_INDEX, JSFunction, js_weak_ref_fun) \ V(JS_FINALIZATION_REGISTRY_FUNCTION_INDEX, JSFunction, \ js_finalization_registry_fun) \ + V(JS_TEMPORAL_CALENDAR_FUNCTION_INDEX, JSFunction, \ + temporal_calendar_function) \ + V(JS_TEMPORAL_DURATION_FUNCTION_INDEX, JSFunction, \ + temporal_duration_function) \ + V(JS_TEMPORAL_INSTANT_FUNCTION_INDEX, JSFunction, temporal_instant_function) \ + V(JS_TEMPORAL_PLAIN_DATE_FUNCTION_INDEX, JSFunction, \ + temporal_plain_date_function) \ + V(JS_TEMPORAL_PLAIN_DATE_TIME_FUNCTION_INDEX, JSFunction, \ + temporal_plain_date_time_function) \ + V(JS_TEMPORAL_PLAIN_MONTH_DAY_FUNCTION_INDEX, JSFunction, \ + temporal_plain_month_day_function) \ + V(JS_TEMPORAL_PLAIN_TIME_FUNCTION_INDEX, JSFunction, \ + temporal_plain_time_function) \ + V(JS_TEMPORAL_PLAIN_YEAR_MONTH_FUNCTION_INDEX, JSFunction, \ + temporal_plain_year_month_function) \ + V(JS_TEMPORAL_TIME_ZONE_FUNCTION_INDEX, JSFunction, \ + temporal_time_zone_function) \ + V(JS_TEMPORAL_ZONED_DATE_TIME_FUNCTION_INDEX, JSFunction, \ + temporal_zoned_date_time_function) \ /* Context maps */ \ V(NATIVE_CONTEXT_MAP_INDEX, Map, native_context_map) \ V(FUNCTION_CONTEXT_MAP_INDEX, Map, function_context_map) \ diff --git a/src/objects/js-function.cc b/src/objects/js-function.cc index 105f6388af..decc508023 100644 --- a/src/objects/js-function.cc +++ b/src/objects/js-function.cc @@ -594,6 +594,16 @@ bool CanSubclassHaveInobjectProperties(InstanceType instance_type) { case JS_SPECIAL_API_OBJECT_TYPE: case JS_TYPED_ARRAY_TYPE: case JS_PRIMITIVE_WRAPPER_TYPE: + case JS_TEMPORAL_CALENDAR_TYPE: + case JS_TEMPORAL_DURATION_TYPE: + case JS_TEMPORAL_INSTANT_TYPE: + case JS_TEMPORAL_PLAIN_DATE_TYPE: + case JS_TEMPORAL_PLAIN_DATE_TIME_TYPE: + case JS_TEMPORAL_PLAIN_MONTH_DAY_TYPE: + case JS_TEMPORAL_PLAIN_TIME_TYPE: + case JS_TEMPORAL_PLAIN_YEAR_MONTH_TYPE: + case JS_TEMPORAL_TIME_ZONE_TYPE: + case JS_TEMPORAL_ZONED_DATE_TIME_TYPE: case JS_WEAK_MAP_TYPE: case JS_WEAK_REF_TYPE: case JS_WEAK_SET_TYPE: diff --git a/src/objects/js-objects.cc b/src/objects/js-objects.cc index 008036b11f..26b32eaca7 100644 --- a/src/objects/js-objects.cc +++ b/src/objects/js-objects.cc @@ -58,6 +58,7 @@ #include "src/objects/js-segmenter.h" #include "src/objects/js-segments.h" #endif // V8_INTL_SUPPORT +#include "src/objects/js-temporal-objects-inl.h" #include "src/objects/js-weak-refs.h" #include "src/objects/map-inl.h" #include "src/objects/module.h" @@ -2303,6 +2304,26 @@ int JSObject::GetHeaderSize(InstanceType type, return JSStringIterator::kHeaderSize; case JS_MODULE_NAMESPACE_TYPE: return JSModuleNamespace::kHeaderSize; + case JS_TEMPORAL_CALENDAR_TYPE: + return JSTemporalCalendar::kHeaderSize; + case JS_TEMPORAL_DURATION_TYPE: + return JSTemporalDuration::kHeaderSize; + case JS_TEMPORAL_INSTANT_TYPE: + return JSTemporalInstant::kHeaderSize; + case JS_TEMPORAL_PLAIN_DATE_TYPE: + return JSTemporalPlainDate::kHeaderSize; + case JS_TEMPORAL_PLAIN_DATE_TIME_TYPE: + return JSTemporalPlainDateTime::kHeaderSize; + case JS_TEMPORAL_PLAIN_MONTH_DAY_TYPE: + return JSTemporalPlainMonthDay::kHeaderSize; + case JS_TEMPORAL_PLAIN_TIME_TYPE: + return JSTemporalPlainTime::kHeaderSize; + case JS_TEMPORAL_PLAIN_YEAR_MONTH_TYPE: + return JSTemporalPlainYearMonth::kHeaderSize; + case JS_TEMPORAL_TIME_ZONE_TYPE: + return JSTemporalTimeZone::kHeaderSize; + case JS_TEMPORAL_ZONED_DATE_TIME_TYPE: + return JSTemporalZonedDateTime::kHeaderSize; #ifdef V8_INTL_SUPPORT case JS_V8_BREAK_ITERATOR_TYPE: return JSV8BreakIterator::kHeaderSize; diff --git a/src/objects/js-temporal-objects-inl.h b/src/objects/js-temporal-objects-inl.h new file mode 100644 index 0000000000..d3c8dfeb7b --- /dev/null +++ b/src/objects/js-temporal-objects-inl.h @@ -0,0 +1,103 @@ +// Copyright 2021 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. + +#ifndef V8_OBJECTS_JS_TEMPORAL_OBJECTS_INL_H_ +#define V8_OBJECTS_JS_TEMPORAL_OBJECTS_INL_H_ + +#include "src/api/api-inl.h" +#include "src/objects/js-temporal-objects.h" +#include "src/objects/objects-inl.h" + +// Has to be the last include (doesn't have include guards): +#include "src/objects/object-macros.h" + +namespace v8 { +namespace internal { + +#include "torque-generated/src/objects/js-temporal-objects-tq-inl.inc" + +#define TEMPORAL_INLINE_GETTER_SETTER(T, data, field, lower, upper, B) \ + inline void T::set_##field(int32_t field) { \ + DCHECK_GE(upper, field); \ + DCHECK_LE(lower, field); \ + int hints = data(); \ + hints = B##Bits::update(hints, field); \ + set_##data(hints); \ + } \ + inline int32_t T::field() const { \ + int32_t v = B##Bits::decode(data()); \ + DCHECK_GE(upper, v); \ + DCHECK_LE(lower, v); \ + return v; \ + } + +#define TEMPORAL_INLINE_SIGNED_GETTER_SETTER(T, data, field, lower, upper, B) \ + inline void T::set_##field(int32_t field) { \ + DCHECK_GE(upper, field); \ + DCHECK_LE(lower, field); \ + int hints = data(); \ + hints = B##Bits::update(hints, field); \ + set_##data(hints); \ + } \ + inline int32_t T::field() const { \ + int32_t v = B##Bits::decode(data()); \ + v |= ((int32_t{1} << (B##Bits::kSize - 1) & v) \ + ? (static_cast(int32_t{-1}) << B##Bits::kSize) \ + : 0); \ + CHECK_GE(upper, v); \ + CHECK_LE(lower, v); \ + return v; \ + } + +#define TEMPORAL_DATE_INLINE_GETTER_SETTER(T, data) \ + TEMPORAL_INLINE_SIGNED_GETTER_SETTER(T, data, iso_year, -32767, 32768, \ + IsoYear) \ + TEMPORAL_INLINE_GETTER_SETTER(T, data, iso_month, 1, 12, IsoMonth) \ + TEMPORAL_INLINE_GETTER_SETTER(T, data, iso_day, 1, 31, IsoDay) + +#define TEMPORAL_TIME_INLINE_GETTER_SETTER(T, data1, data2) \ + TEMPORAL_INLINE_GETTER_SETTER(T, data1, iso_hour, 0, 23, IsoHour) \ + TEMPORAL_INLINE_GETTER_SETTER(T, data1, iso_minute, 0, 59, IsoMinute) \ + TEMPORAL_INLINE_GETTER_SETTER(T, data1, iso_second, 0, 59, IsoSecond) \ + TEMPORAL_INLINE_GETTER_SETTER(T, data2, iso_millisecond, 0, 999, \ + IsoMillisecond) \ + TEMPORAL_INLINE_GETTER_SETTER(T, data2, iso_microsecond, 0, 999, \ + IsoMicrosecond) \ + TEMPORAL_INLINE_GETTER_SETTER(T, data2, iso_nanosecond, 0, 999, IsoNanosecond) + +TEMPORAL_DATE_INLINE_GETTER_SETTER(JSTemporalPlainDate, year_month_day) +TEMPORAL_DATE_INLINE_GETTER_SETTER(JSTemporalPlainDateTime, year_month_day) +TEMPORAL_TIME_INLINE_GETTER_SETTER(JSTemporalPlainDateTime, hour_minute_second, + second_parts) +TEMPORAL_DATE_INLINE_GETTER_SETTER(JSTemporalPlainMonthDay, year_month_day) +TEMPORAL_TIME_INLINE_GETTER_SETTER(JSTemporalPlainTime, hour_minute_second, + second_parts) +TEMPORAL_DATE_INLINE_GETTER_SETTER(JSTemporalPlainYearMonth, year_month_day) + +TQ_OBJECT_CONSTRUCTORS_IMPL(JSTemporalCalendar) +TQ_OBJECT_CONSTRUCTORS_IMPL(JSTemporalDuration) +TQ_OBJECT_CONSTRUCTORS_IMPL(JSTemporalInstant) +TQ_OBJECT_CONSTRUCTORS_IMPL(JSTemporalPlainDate) +TQ_OBJECT_CONSTRUCTORS_IMPL(JSTemporalPlainDateTime) +TQ_OBJECT_CONSTRUCTORS_IMPL(JSTemporalPlainMonthDay) +TQ_OBJECT_CONSTRUCTORS_IMPL(JSTemporalPlainTime) +TQ_OBJECT_CONSTRUCTORS_IMPL(JSTemporalPlainYearMonth) +TQ_OBJECT_CONSTRUCTORS_IMPL(JSTemporalTimeZone) +TQ_OBJECT_CONSTRUCTORS_IMPL(JSTemporalZonedDateTime) + +BIT_FIELD_ACCESSORS(JSTemporalCalendar, flags, calendar_index, + JSTemporalCalendar::CalendarIndexBits) + +BOOL_ACCESSORS(JSTemporalTimeZone, flags, is_offset, IsOffsetBit::kShift) + +BIT_FIELD_ACCESSORS(JSTemporalTimeZone, flags, + offset_milliseconds_or_time_zone_index, + JSTemporalTimeZone::OffsetMillisecondsOrTimeZoneIndexBits) + +} // namespace internal +} // namespace v8 + +#include "src/objects/object-macros-undef.h" + +#endif // V8_OBJECTS_JS_TEMPORAL_OBJECTS_INL_H_ diff --git a/src/objects/js-temporal-objects.h b/src/objects/js-temporal-objects.h new file mode 100644 index 0000000000..07aa843f32 --- /dev/null +++ b/src/objects/js-temporal-objects.h @@ -0,0 +1,163 @@ +// Copyright 2021 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. + +#ifndef V8_OBJECTS_JS_TEMPORAL_OBJECTS_H_ +#define V8_OBJECTS_JS_TEMPORAL_OBJECTS_H_ + +#include "src/execution/isolate.h" +#include "src/heap/factory.h" +#include "src/objects/objects.h" + +// Has to be the last include (doesn't have include guards): +#include "src/objects/object-macros.h" + +namespace v8 { +namespace internal { + +#include "torque-generated/src/objects/js-temporal-objects-tq.inc" + +#define DECLARE_TEMPORAL_INLINE_GETTER_SETTER(field) \ + inline void set_##field(int32_t field); \ + inline int32_t field() const; + +#define DECLARE_TEMPORAL_TIME_INLINE_GETTER_SETTER() \ + DECLARE_TEMPORAL_INLINE_GETTER_SETTER(iso_hour) \ + DECLARE_TEMPORAL_INLINE_GETTER_SETTER(iso_minute) \ + DECLARE_TEMPORAL_INLINE_GETTER_SETTER(iso_second) \ + DECLARE_TEMPORAL_INLINE_GETTER_SETTER(iso_millisecond) \ + DECLARE_TEMPORAL_INLINE_GETTER_SETTER(iso_microsecond) \ + DECLARE_TEMPORAL_INLINE_GETTER_SETTER(iso_nanosecond) + +#define DECLARE_TEMPORAL_DATE_INLINE_GETTER_SETTER() \ + DECLARE_TEMPORAL_INLINE_GETTER_SETTER(iso_year) \ + DECLARE_TEMPORAL_INLINE_GETTER_SETTER(iso_month) \ + DECLARE_TEMPORAL_INLINE_GETTER_SETTER(iso_day) + +#define TEMPORAL_UNIMPLEMENTED(T) \ + { \ + printf("TBW %s\n", __PRETTY_FUNCTION__); \ + UNIMPLEMENTED(); \ + } + +class JSTemporalCalendar + : public TorqueGeneratedJSTemporalCalendar { + public: + DECL_PRINTER(JSTemporalCalendar) + + DEFINE_TORQUE_GENERATED_JS_TEMPORAL_CALENDAR_FLAGS() + + DECL_INT_ACCESSORS(calendar_index) + + TQ_OBJECT_CONSTRUCTORS(JSTemporalCalendar) +}; + +class JSTemporalDuration + : public TorqueGeneratedJSTemporalDuration { + public: + DECL_PRINTER(JSTemporalDuration) + + TQ_OBJECT_CONSTRUCTORS(JSTemporalDuration) +}; + +class JSTemporalInstant + : public TorqueGeneratedJSTemporalInstant { + public: + DECL_PRINTER(JSTemporalInstant) + + TQ_OBJECT_CONSTRUCTORS(JSTemporalInstant) +}; + +class JSTemporalPlainDate + : public TorqueGeneratedJSTemporalPlainDate { + public: + DECL_PRINTER(JSTemporalPlainDate) + + DEFINE_TORQUE_GENERATED_JS_TEMPORAL_YEAR_MONTH_DAY() + + DECLARE_TEMPORAL_DATE_INLINE_GETTER_SETTER() + + TQ_OBJECT_CONSTRUCTORS(JSTemporalPlainDate) +}; + +class JSTemporalPlainDateTime + : public TorqueGeneratedJSTemporalPlainDateTime { + public: + DECL_PRINTER(JSTemporalPlainDateTime) + + DEFINE_TORQUE_GENERATED_JS_TEMPORAL_YEAR_MONTH_DAY() + DEFINE_TORQUE_GENERATED_JS_TEMPORAL_HOUR_MINUTE_SECOND() + DEFINE_TORQUE_GENERATED_JS_TEMPORAL_SECOND_PARTS() + + DECLARE_TEMPORAL_DATE_INLINE_GETTER_SETTER() + DECLARE_TEMPORAL_TIME_INLINE_GETTER_SETTER() + + TQ_OBJECT_CONSTRUCTORS(JSTemporalPlainDateTime) +}; + +class JSTemporalPlainMonthDay + : public TorqueGeneratedJSTemporalPlainMonthDay { + public: + DECL_PRINTER(JSTemporalPlainMonthDay) + + DEFINE_TORQUE_GENERATED_JS_TEMPORAL_YEAR_MONTH_DAY() + + DECLARE_TEMPORAL_DATE_INLINE_GETTER_SETTER() + + TQ_OBJECT_CONSTRUCTORS(JSTemporalPlainMonthDay) +}; + +class JSTemporalPlainTime + : public TorqueGeneratedJSTemporalPlainTime { + public: + DECL_PRINTER(JSTemporalPlainTime) + + DEFINE_TORQUE_GENERATED_JS_TEMPORAL_HOUR_MINUTE_SECOND() + DEFINE_TORQUE_GENERATED_JS_TEMPORAL_SECOND_PARTS() + + DECLARE_TEMPORAL_TIME_INLINE_GETTER_SETTER() + + TQ_OBJECT_CONSTRUCTORS(JSTemporalPlainTime) +}; + +class JSTemporalPlainYearMonth + : public TorqueGeneratedJSTemporalPlainYearMonth { + public: + DECL_PRINTER(JSTemporalPlainYearMonth) + + DEFINE_TORQUE_GENERATED_JS_TEMPORAL_YEAR_MONTH_DAY() + + DECLARE_TEMPORAL_DATE_INLINE_GETTER_SETTER() + + TQ_OBJECT_CONSTRUCTORS(JSTemporalPlainYearMonth) +}; + +class JSTemporalTimeZone + : public TorqueGeneratedJSTemporalTimeZone { + public: + DECL_PRINTER(JSTemporalTimeZone) + + DEFINE_TORQUE_GENERATED_JS_TEMPORAL_TIME_ZONE_FLAGS() + + DECL_BOOLEAN_ACCESSORS(is_offset) + DECL_INT_ACCESSORS(offset_milliseconds_or_time_zone_index) + + TQ_OBJECT_CONSTRUCTORS(JSTemporalTimeZone) +}; + +class JSTemporalZonedDateTime + : public TorqueGeneratedJSTemporalZonedDateTime { + public: + DECL_PRINTER(JSTemporalZonedDateTime) + + TQ_OBJECT_CONSTRUCTORS(JSTemporalZonedDateTime) +}; + +} // namespace internal +} // namespace v8 +#include "src/objects/object-macros-undef.h" +#endif // V8_OBJECTS_JS_TEMPORAL_OBJECTS_H_ diff --git a/src/objects/js-temporal-objects.tq b/src/objects/js-temporal-objects.tq new file mode 100644 index 0000000000..f440907770 --- /dev/null +++ b/src/objects/js-temporal-objects.tq @@ -0,0 +1,89 @@ +// Copyright 2021 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. + +#include 'src/objects/js-temporal-objects.h' + +bitfield struct JSTemporalCalendarFlags extends uint31 { + calendar_index: int32: 5 bit; +} + +bitfield struct JSTemporalYearMonthDay extends uint31 { + iso_year: int32: 16 bit; + iso_month: int32: 4 bit; + iso_day: int32: 5 bit; +} + +bitfield struct JSTemporalHourMinuteSecond extends uint31 { + iso_hour: int32: 5 bit; + iso_minute: int32: 6 bit; + iso_second: int32: 6 bit; +} + +bitfield struct JSTemporalSecondParts extends uint31 { + iso_millisecond: int32: 10 bit; + iso_microsecond: int32: 10 bit; + iso_nanosecond: int32: 10 bit; +} + +bitfield struct JSTemporalTimeZoneFlags extends uint31 { + is_offset: bool: 1 bit; + offset_milliseconds_or_time_zone_index: int32: 28 bit; +} + +extern class JSTemporalCalendar extends JSObject { + flags: SmiTagged; +} + +extern class JSTemporalDuration extends JSObject { + years: Number; + months: Number; + weeks: Number; + days: Number; + hours: Number; + minutes: Number; + seconds: Number; + milliseconds: Number; + microseconds: Number; + nanoseconds: Number; +} + +extern class JSTemporalInstant extends JSObject { nanoseconds: BigInt; } + +extern class JSTemporalPlainDateTime extends JSObject { + year_month_day: SmiTagged; + hour_minute_second: SmiTagged; + second_parts: SmiTagged; + calendar: JSReceiver; +} + +extern class JSTemporalPlainDate extends JSObject { + year_month_day: SmiTagged; + calendar: JSReceiver; +} + +extern class JSTemporalPlainMonthDay extends JSObject { + year_month_day: SmiTagged; + calendar: JSReceiver; +} + +extern class JSTemporalPlainTime extends JSObject { + hour_minute_second: SmiTagged; + second_parts: SmiTagged; + calendar: JSReceiver; +} + +extern class JSTemporalPlainYearMonth extends JSObject { + year_month_day: SmiTagged; + calendar: JSReceiver; +} + +extern class JSTemporalTimeZone extends JSObject { + flags: SmiTagged; +} + +extern class JSTemporalZonedDateTime extends JSObject { + nanoseconds: BigInt; + time_zone: JSReceiver; + calendar: JSReceiver; +} diff --git a/src/objects/map.cc b/src/objects/map.cc index 0610e59688..817e1864ac 100644 --- a/src/objects/map.cc +++ b/src/objects/map.cc @@ -274,6 +274,16 @@ VisitorId Map::GetVisitorId(Map map) { case JS_SET_VALUE_ITERATOR_TYPE: case JS_STRING_ITERATOR_PROTOTYPE_TYPE: case JS_STRING_ITERATOR_TYPE: + case JS_TEMPORAL_CALENDAR_TYPE: + case JS_TEMPORAL_DURATION_TYPE: + case JS_TEMPORAL_INSTANT_TYPE: + case JS_TEMPORAL_PLAIN_DATE_TYPE: + case JS_TEMPORAL_PLAIN_DATE_TIME_TYPE: + case JS_TEMPORAL_PLAIN_MONTH_DAY_TYPE: + case JS_TEMPORAL_PLAIN_TIME_TYPE: + case JS_TEMPORAL_PLAIN_YEAR_MONTH_TYPE: + case JS_TEMPORAL_TIME_ZONE_TYPE: + case JS_TEMPORAL_ZONED_DATE_TIME_TYPE: case JS_TYPED_ARRAY_PROTOTYPE_TYPE: #ifdef V8_INTL_SUPPORT case JS_V8_BREAK_ITERATOR_TYPE: diff --git a/src/objects/object-list-macros.h b/src/objects/object-list-macros.h index 51dc178f8b..a55b82064e 100644 --- a/src/objects/object-list-macros.h +++ b/src/objects/object-list-macros.h @@ -158,6 +158,16 @@ class ZoneForwardList; V(JSSetIterator) \ V(JSSpecialObject) \ V(JSStringIterator) \ + V(JSTemporalCalendar) \ + V(JSTemporalDuration) \ + V(JSTemporalInstant) \ + V(JSTemporalPlainDate) \ + V(JSTemporalPlainTime) \ + V(JSTemporalPlainDateTime) \ + V(JSTemporalPlainMonthDay) \ + V(JSTemporalPlainYearMonth) \ + V(JSTemporalTimeZone) \ + V(JSTemporalZonedDateTime) \ V(JSTypedArray) \ V(JSWeakCollection) \ V(JSWeakRef) \ diff --git a/src/objects/objects-body-descriptors-inl.h b/src/objects/objects-body-descriptors-inl.h index 44a11accdb..bf64876df4 100644 --- a/src/objects/objects-body-descriptors-inl.h +++ b/src/objects/objects-body-descriptors-inl.h @@ -1112,6 +1112,16 @@ ReturnType BodyDescriptorApply(InstanceType type, T1 p1, T2 p2, T3 p3, T4 p4) { case JS_SPECIAL_API_OBJECT_TYPE: case JS_STRING_ITERATOR_PROTOTYPE_TYPE: case JS_STRING_ITERATOR_TYPE: + case JS_TEMPORAL_CALENDAR_TYPE: + case JS_TEMPORAL_DURATION_TYPE: + case JS_TEMPORAL_INSTANT_TYPE: + case JS_TEMPORAL_PLAIN_DATE_TYPE: + case JS_TEMPORAL_PLAIN_DATE_TIME_TYPE: + case JS_TEMPORAL_PLAIN_MONTH_DAY_TYPE: + case JS_TEMPORAL_PLAIN_TIME_TYPE: + case JS_TEMPORAL_PLAIN_YEAR_MONTH_TYPE: + case JS_TEMPORAL_TIME_ZONE_TYPE: + case JS_TEMPORAL_ZONED_DATE_TIME_TYPE: case JS_TYPED_ARRAY_PROTOTYPE_TYPE: case JS_FUNCTION_TYPE: case JS_CLASS_CONSTRUCTOR_TYPE: diff --git a/src/objects/objects.h b/src/objects/objects.h index 7cb94dfb74..75da7c6df0 100644 --- a/src/objects/objects.h +++ b/src/objects/objects.h @@ -65,6 +65,16 @@ // - JSRegExp // - JSSetIterator // - JSStringIterator +// - JSTemporalCalendar +// - JSTemporalDuration +// - JSTemporalInstant +// - JSTemporalPlainDate +// - JSTemporalPlainDateTime +// - JSTemporalPlainMonthDay +// - JSTemporalPlainTime +// - JSTemporalPlainYearMonth +// - JSTemporalTimeZone +// - JSTemporalZonedDateTime // - JSWeakCollection // - JSWeakMap // - JSWeakSet diff --git a/src/torque/implementation-visitor.cc b/src/torque/implementation-visitor.cc index 459f40dc66..a3d233e093 100644 --- a/src/torque/implementation-visitor.cc +++ b/src/torque/implementation-visitor.cc @@ -5283,6 +5283,7 @@ void ImplementationVisitor::GenerateExportedMacrosAssembler( cc_contents << "#include \"src/objects/fixed-array-inl.h\"\n"; cc_contents << "#include \"src/objects/free-space.h\"\n"; cc_contents << "#include \"src/objects/js-regexp-string-iterator.h\"\n"; + cc_contents << "#include \"src/objects/js-temporal-objects.h\"\n"; cc_contents << "#include \"src/objects/js-weak-refs.h\"\n"; cc_contents << "#include \"src/objects/ordered-hash-table.h\"\n"; cc_contents << "#include \"src/objects/property-descriptor-object.h\"\n"; diff --git a/test/mjsunit/mjsunit.status b/test/mjsunit/mjsunit.status index 5a9f713142..11d544294a 100644 --- a/test/mjsunit/mjsunit.status +++ b/test/mjsunit/mjsunit.status @@ -441,6 +441,9 @@ # noi18n is required for Intl 'regress/regress-crbug-1052647': [PASS,FAIL], + + # Temporal intl tests won't work in no_i18n + 'temporal/function-exist': [FAIL], }], # 'no_i18n' ############################################################################## diff --git a/test/mjsunit/temporal/function-exist-no-intl.js b/test/mjsunit/temporal/function-exist-no-intl.js new file mode 100644 index 0000000000..46bc022101 --- /dev/null +++ b/test/mjsunit/temporal/function-exist-no-intl.js @@ -0,0 +1,329 @@ +// Copyright 2021 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. +// Flags: --harmony-temporal + +// This file is similar to function-exist but w/o era or eraYear +// The following are generated by +// proposal-temporal/spec$ egrep "

" *.html|egrep ">Temporal\.|>get"|egrep "get|\(" | \ +// cut -d'>' -f2|cut -d'<' -f 1 |egrep -v "era" |egrep -v "\. \. \." |sort -u + +const funcs = [ + + "get Temporal.Calendar.prototype.id", + "get Temporal.Duration.prototype.blank", + "get Temporal.Duration.prototype.days", + "get Temporal.Duration.prototype.hours", + "get Temporal.Duration.prototype.microseconds", + "get Temporal.Duration.prototype.milliseconds", + "get Temporal.Duration.prototype.minutes", + "get Temporal.Duration.prototype.months", + "get Temporal.Duration.prototype.nanoseconds", + "get Temporal.Duration.prototype.seconds", + "get Temporal.Duration.prototype.sign", + "get Temporal.Duration.prototype.weeks", + "get Temporal.Duration.prototype.years", + "get Temporal.Instant.prototype.epochMicroseconds", + "get Temporal.Instant.prototype.epochMilliseconds", + "get Temporal.Instant.prototype.epochNanoseconds", + "get Temporal.Instant.prototype.epochSeconds", + "get Temporal.PlainDate.prototype.calendar", + "get Temporal.PlainDate.prototype.day", + "get Temporal.PlainDate.prototype.dayOfWeek", + "get Temporal.PlainDate.prototype.dayOfYear", + "get Temporal.PlainDate.prototype.daysInMonth", + "get Temporal.PlainDate.prototype.daysInWeek", + "get Temporal.PlainDate.prototype.daysInYear", + "get Temporal.PlainDate.prototype.inLeapYear", + "get Temporal.PlainDate.prototype.month", + "get Temporal.PlainDate.prototype.monthCode", + "get Temporal.PlainDate.prototype.monthsInYear", + "get Temporal.PlainDate.prototype.weekOfYear", + "get Temporal.PlainDate.prototype.year", + "get Temporal.PlainDateTime.prototype.calendar", + "get Temporal.PlainDateTime.prototype.day", + "get Temporal.PlainDateTime.prototype.dayOfWeek", + "get Temporal.PlainDateTime.prototype.dayOfYear", + "get Temporal.PlainDateTime.prototype.daysInMonth", + "get Temporal.PlainDateTime.prototype.daysInWeek", + "get Temporal.PlainDateTime.prototype.daysInYear", + "get Temporal.PlainDateTime.prototype.hour", + "get Temporal.PlainDateTime.prototype.inLeapYear", + "get Temporal.PlainDateTime.prototype.microsecond", + "get Temporal.PlainDateTime.prototype.millisecond", + "get Temporal.PlainDateTime.prototype.minute", + "get Temporal.PlainDateTime.prototype.month", + "get Temporal.PlainDateTime.prototype.monthCode", + "get Temporal.PlainDateTime.prototype.monthsInYear", + "get Temporal.PlainDateTime.prototype.nanosecond", + "get Temporal.PlainDateTime.prototype.second", + "get Temporal.PlainDateTime.prototype.weekOfYear", + "get Temporal.PlainDateTime.prototype.year", + "get Temporal.PlainMonthDay.prototype.calendar", + "get Temporal.PlainMonthDay.prototype.day", + "get Temporal.PlainMonthDay.prototype.monthCode", + "get Temporal.PlainTime.prototype.calendar", + "get Temporal.PlainTime.prototype.hour", + "get Temporal.PlainTime.prototype.microsecond", + "get Temporal.PlainTime.prototype.millisecond", + "get Temporal.PlainTime.prototype.minute", + "get Temporal.PlainTime.prototype.nanosecond", + "get Temporal.PlainTime.prototype.second", + "get Temporal.PlainYearMonth.prototype.calendar", + "get Temporal.PlainYearMonth.prototype.daysInMonth", + "get Temporal.PlainYearMonth.prototype.daysInYear", + "get Temporal.PlainYearMonth.prototype.inLeapYear", + "get Temporal.PlainYearMonth.prototype.month", + "get Temporal.PlainYearMonth.prototype.monthCode", + "get Temporal.PlainYearMonth.prototype.monthsInYear", + "get Temporal.PlainYearMonth.prototype.year", + "get Temporal.TimeZone.prototype.id", + "get Temporal.ZonedDateTime.prototype.calendar", + "get Temporal.ZonedDateTime.prototype.day", + "get Temporal.ZonedDateTime.prototype.dayOfWeek", + "get Temporal.ZonedDateTime.prototype.dayOfYear", + "get Temporal.ZonedDateTime.prototype.daysInMonth", + "get Temporal.ZonedDateTime.prototype.daysInWeek", + "get Temporal.ZonedDateTime.prototype.daysInYear", + "get Temporal.ZonedDateTime.prototype.epochMicroseconds", + "get Temporal.ZonedDateTime.prototype.epochMilliseconds", + "get Temporal.ZonedDateTime.prototype.epochNanoseconds", + "get Temporal.ZonedDateTime.prototype.epochSeconds", + "get Temporal.ZonedDateTime.prototype.hour", + "get Temporal.ZonedDateTime.prototype.hoursInDay", + "get Temporal.ZonedDateTime.prototype.inLeapYear", + "get Temporal.ZonedDateTime.prototype.microsecond", + "get Temporal.ZonedDateTime.prototype.millisecond", + "get Temporal.ZonedDateTime.prototype.minute", + "get Temporal.ZonedDateTime.prototype.month", + "get Temporal.ZonedDateTime.prototype.monthCode", + "get Temporal.ZonedDateTime.prototype.monthsInYear", + "get Temporal.ZonedDateTime.prototype.nanosecond", + "get Temporal.ZonedDateTime.prototype.offset", + "get Temporal.ZonedDateTime.prototype.offsetNanoseconds", + "get Temporal.ZonedDateTime.prototype.second", + "get Temporal.ZonedDateTime.prototype.timeZone", + "get Temporal.ZonedDateTime.prototype.weekOfYear", + "get Temporal.ZonedDateTime.prototype.year", + "Temporal.Calendar.from ( _item_ )", + "Temporal.Calendar ( _id_ )", + "Temporal.Calendar.prototype.dateAdd ( _date_, _duration_ [ , _options_ ] )", + "Temporal.Calendar.prototype.dateFromFields ( _fields_ [ , _options_ ] )", + "Temporal.Calendar.prototype.dateUntil ( _one_, _two_ [ , _options_ ] )", + "Temporal.Calendar.prototype.dayOfWeek ( _dateOrDateTime_ )", + "Temporal.Calendar.prototype.dayOfWeek ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.dayOfYear ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.daysInMonth ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.daysInWeek ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.daysInYear ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.day ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.fields ( _fields_ )", + "Temporal.Calendar.prototype.inLeapYear ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.mergeFields ( _fields_, _additionalFields_ )", + "Temporal.Calendar.prototype.monthCode ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.monthDayFromFields ( _fields_ [ , _options_ ] )", + "Temporal.Calendar.prototype.monthsInYear ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.month ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.toJSON ( )", + "Temporal.Calendar.prototype.toString ( )", + "Temporal.Calendar.prototype.weekOfYear ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.yearMonthFromFields ( _fields_ [ , _options_ ] )", + "Temporal.Calendar.prototype.year ( _temporalDateLike_ )", + "Temporal.Duration.compare ( _one_, _two_ [ , _options_ ] )", + "Temporal.Duration.from ( _item_ )", + "Temporal.Duration.prototype.abs ( )", + "Temporal.Duration.prototype.add ( _other_ [ , _options_ ] )", + "Temporal.Duration.prototype.negated ( )", + "Temporal.Duration.prototype.round ( _options_ )", + "Temporal.Duration.prototype.subtract ( _other_ [ , _options_ ] )", + "Temporal.Duration.prototype.toJSON ( )", + "Temporal.Duration.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.Duration.prototype.toString ( [ _options_ ] )", + "Temporal.Duration.prototype.total ( _options_ )", + "Temporal.Duration.prototype.valueOf ( )", + "Temporal.Duration.prototype.with ( _temporalDurationLike_ )", + "Temporal.Duration ( [ _years_ [ , _months_ [ , _weeks_ [ , _days_ [ , _hours_ [ , _minutes_ [ , _seconds_ [ , _milliseconds_ [ , _microseconds_ [ , _nanoseconds_ ] ] ] ] ] ] ] ] ] ] )", + "Temporal.Instant.compare ( _one_, _two_ )", + "Temporal.Instant ( _epochNanoseconds_ )", + "Temporal.Instant.fromEpochMicroseconds ( _epochMicroseconds_ )", + "Temporal.Instant.fromEpochMilliseconds ( _epochMilliseconds_ )", + "Temporal.Instant.fromEpochNanoseconds ( _epochNanoseconds_ )", + "Temporal.Instant.fromEpochSeconds ( _epochSeconds_ )", + "Temporal.Instant.from ( _item_ )", + "Temporal.Instant.prototype.add ( _temporalDurationLike_ )", + "Temporal.Instant.prototype.equals ( _other_ )", + "Temporal.Instant.prototype.round ( _options_ )", + "Temporal.Instant.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.Instant.prototype.subtract ( _temporalDurationLike_ )", + "Temporal.Instant.prototype.toJSON ( )", + "Temporal.Instant.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.Instant.prototype.toString ( [ _options_ ] )", + "Temporal.Instant.prototype.toZonedDateTimeISO ( _item_ )", + "Temporal.Instant.prototype.toZonedDateTime ( _item_ )", + "Temporal.Instant.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.Instant.prototype.valueOf ( )", + "Temporal.Now.instant ( )", + "Temporal.Now.plainDate ( _calendar_ [ , _temporalTimeZoneLike_ ] )", + "Temporal.Now.plainDateISO ( [ _temporalTimeZoneLike_ ] )", + "Temporal.Now.plainDateTime ( _calendar_ [ , _temporalTimeZoneLike_ ] )", + "Temporal.Now.plainDateTimeISO ( [ _temporalTimeZoneLike_ ] )", + "Temporal.Now.plainTimeISO ( [ _temporalTimeZoneLike_ ] )", + "Temporal.Now.timeZone ( )", + "Temporal.Now.zonedDateTime ( _calendar_ [ , _temporalTimeZoneLike_ ] )", + "Temporal.Now.zonedDateTimeISO ( [ _temporalTimeZoneLike_ ] )", + "Temporal.PlainDate.compare ( _one_, _two_ )", + "Temporal.PlainDate.from ( _item_ [ , _options_ ] )", + "Temporal.PlainDate ( _isoYear_, _isoMonth_, _isoDay_ [ , _calendarLike_ ] )", + "Temporal.PlainDate.prototype.add ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainDate.prototype.equals ( _other_ )", + "Temporal.PlainDate.prototype.getISOFields ( )", + "Temporal.PlainDate.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.PlainDate.prototype.subtract ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainDate.prototype.toJSON ( )", + "Temporal.PlainDate.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.PlainDate.prototype.toPlainDateTime ( [ _temporalTime_ ] )", + "Temporal.PlainDate.prototype.toPlainMonthDay ( )", + "Temporal.PlainDate.prototype.toPlainYearMonth ( )", + "Temporal.PlainDate.prototype.toString ( [ _options_ ] )", + "Temporal.PlainDate.prototype.toZonedDateTime ( _item_ )", + "Temporal.PlainDate.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.PlainDate.prototype.valueOf ( )", + "Temporal.PlainDate.prototype.withCalendar ( _calendar_ )", + "Temporal.PlainDate.prototype.with ( _temporalDateLike_ [ , _options_ ] )", + "Temporal.PlainDateTime.compare ( _one_, _two_ )", + "Temporal.PlainDateTime.from ( _item_ [ , _options_ ] )", + "Temporal.PlainDateTime ( _isoYear_, _isoMonth_, _isoDay_ [ , _hour_ [ , _minute_ [ , _second_ [ , _millisecond_ [ , _microsecond_ [ , _nanosecond_ [ , _calendarLike_ ] ] ] ] ] ] ] )", + "Temporal.PlainDateTime.prototype.add ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainDateTime.prototype.equals ( _other_ )", + "Temporal.PlainDateTime.prototype.getISOFields ( )", + "Temporal.PlainDateTime.prototype.round ( _options_ )", + "Temporal.PlainDateTime.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.PlainDateTime.prototype.subtract ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainDateTime.prototype.toJSON ( )", + "Temporal.PlainDateTime.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.PlainDateTime.prototype.toPlainDate ( )", + "Temporal.PlainDateTime.prototype.toPlainMonthDay ( )", + "Temporal.PlainDateTime.prototype.toPlainTime ( )", + "Temporal.PlainDateTime.prototype.toPlainYearMonth ( )", + "Temporal.PlainDateTime.prototype.toString ( [ _options_ ] )", + "Temporal.PlainDateTime.prototype.toZonedDateTime ( _temporalTimeZoneLike_ [ , _options_ ] )", + "Temporal.PlainDateTime.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.PlainDateTime.prototype.valueOf ( )", + "Temporal.PlainDateTime.prototype.withCalendar ( _calendar_ )", + "Temporal.PlainDateTime.prototype.withPlainDate ( _plainDateLike_ )", + "Temporal.PlainDateTime.prototype.withPlainTime ( [ _plainTimeLike_ ] )", + "Temporal.PlainDateTime.prototype.with ( _temporalDateTimeLike_ [ , _options_ ] )", + "Temporal.PlainMonthDay.from ( _item_ [ , _options_ ] )", + "Temporal.PlainMonthDay ( _isoMonth_, _isoDay_ [ , _calendarLike_ [ , _referenceISOYear_ ] ] )", + "Temporal.PlainMonthDay.prototype.equals ( _other_ )", + "Temporal.PlainMonthDay.prototype.getISOFields ( )", + "Temporal.PlainMonthDay.prototype.toJSON ( )", + "Temporal.PlainMonthDay.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.PlainMonthDay.prototype.toPlainDate ( _item_ )", + "Temporal.PlainMonthDay.prototype.toString ( [ _options_ ] )", + "Temporal.PlainMonthDay.prototype.valueOf ( )", + "Temporal.PlainMonthDay.prototype.with ( _temporalMonthDayLike_ [ , _options_ ] )", + "Temporal.PlainTime.compare ( _one_, _two_ )", + "Temporal.PlainTime.from ( _item_ [ , _options_ ] )", + "Temporal.PlainTime ( [ _hour_ [ , _minute_ [ , _second_ [ , _millisecond_ [ , _microsecond_ [ , _nanosecond_ ] ] ] ] ] ] )", + "Temporal.PlainTime.prototype.add ( _temporalDurationLike_ )", + "Temporal.PlainTime.prototype.equals ( _other_ )", + "Temporal.PlainTime.prototype.getISOFields ( )", + "Temporal.PlainTime.prototype.round ( _options_ )", + "Temporal.PlainTime.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.PlainTime.prototype.subtract ( _temporalDurationLike_ )", + "Temporal.PlainTime.prototype.toJSON ( )", + "Temporal.PlainTime.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.PlainTime.prototype.toPlainDateTime ( _temporalDate_ )", + "Temporal.PlainTime.prototype.toString ( [ _options_ ] )", + "Temporal.PlainTime.prototype.toZonedDateTime ( _item_ )", + "Temporal.PlainTime.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.PlainTime.prototype.valueOf ( )", + "Temporal.PlainTime.prototype.with ( _temporalTimeLike_ [ , _options_ ] )", + "Temporal.PlainYearMonth.compare ( _one_, _two_ )", + "Temporal.PlainYearMonth.from ( _item_ [ , _options_ ] )", + "Temporal.PlainYearMonth ( _isoYear_, _isoMonth_ [ , _calendarLike_ [ , _referenceISODay_ ] ] )", + "Temporal.PlainYearMonth.prototype.add ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainYearMonth.prototype.equals ( _other_ )", + "Temporal.PlainYearMonth.prototype.getISOFields ( )", + "Temporal.PlainYearMonth.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.PlainYearMonth.prototype.subtract ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainYearMonth.prototype.toJSON ( )", + "Temporal.PlainYearMonth.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.PlainYearMonth.prototype.toPlainDate ( _item_ )", + "Temporal.PlainYearMonth.prototype.toString ( [ _options_ ] )", + "Temporal.PlainYearMonth.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.PlainYearMonth.prototype.valueOf ( )", + "Temporal.PlainYearMonth.prototype.with ( _temporalYearMonthLike_ [ , _options_ ] )", + "Temporal.TimeZone.from ( _item_ )", + "Temporal.TimeZone ( _identifier_ )", + "Temporal.TimeZone.prototype.getInstantFor ( _dateTime_ [ , _options_ ] )", + "Temporal.TimeZone.prototype.getNextTransition ( _startingPoint_ )", + "Temporal.TimeZone.prototype.getOffsetNanosecondsFor ( _instant_ )", + "Temporal.TimeZone.prototype.getOffsetStringFor ( _instant_ )", + "Temporal.TimeZone.prototype.getPlainDateTimeFor ( _instant_ [ , _calendarLike_ ] )", + "Temporal.TimeZone.prototype.getPossibleInstantsFor ( _dateTime_ )", + "Temporal.TimeZone.prototype.getPreviousTransition ( _startingPoint_ )", + "Temporal.TimeZone.prototype.toJSON ( )", + "Temporal.TimeZone.prototype.toString ( )", + "Temporal.ZonedDateTime.compare ( _one_, _two_ )", + "Temporal.ZonedDateTime ( _epochNanoseconds_, _timeZoneLike_ [ , _calendarLike_ ] )", + "Temporal.ZonedDateTime.from ( _item_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.add ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.equals ( _other_ )", + "Temporal.ZonedDateTime.prototype.getISOFields ( )", + "Temporal.ZonedDateTime.prototype.round ( _options_ )", + "Temporal.ZonedDateTime.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.startOfDay ( )", + "Temporal.ZonedDateTime.prototype.subtract ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.toInstant ( )", + "Temporal.ZonedDateTime.prototype.toJSON ( )", + "Temporal.ZonedDateTime.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.ZonedDateTime.prototype.toPlainDate ( )", + "Temporal.ZonedDateTime.prototype.toPlainDateTime ( )", + "Temporal.ZonedDateTime.prototype.toPlainMonthDay ( )", + "Temporal.ZonedDateTime.prototype.toPlainTime ( )", + "Temporal.ZonedDateTime.prototype.toPlainYearMonth ( )", + "Temporal.ZonedDateTime.prototype.toString ( [ _options_ ] )", + "Temporal.ZonedDateTime.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.valueOf ( )", + "Temporal.ZonedDateTime.prototype.withCalendar ( _calendarLike_ )", + "Temporal.ZonedDateTime.prototype.withPlainDate ( _plainDateLike_ )", + "Temporal.ZonedDateTime.prototype.withPlainTime ( [ _plainTimeLike_ ] )", + "Temporal.ZonedDateTime.prototype.with ( _temporalZonedDateTimeLike_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.withTimeZone ( _timeZoneLike_ )", +]; + +// Find out the minimum number of arguments of that function +function numberOfArgs(tokens) { + let argc = 0; + for (i = 2; i < tokens.length; i++) { + if (tokens[i] == "[" || tokens[i] == ")") { + return argc; + } + if (tokens[i] != ",") { + argc++; + } + } +} +funcs.forEach(function(line) { + let tokens = line.split(" "); + if (tokens[0] == "get") { + let lastDot = tokens[1].lastIndexOf("."); + let prototype = eval(tokens[1].substring(0, lastDot)); + let property = tokens[1].substring(lastDot + 1); + let desc = Object.getOwnPropertyDescriptor(prototype, property); + assertNotEquals(desc, undefined, "Getter should be defined:" + line); + assertEquals(desc.set, undefined, "Setter should NOT be defined:" + line); + } else { + let obj = eval(tokens[0]); + // Verify the method is defined + assertNotEquals(obj, undefined, + "Method should be defined:" + line); + + // Verify the number of minimum arguments. + assertEquals(obj.length, numberOfArgs(tokens), + "Method should be defined with " + numberOfArgs(tokens) + + " arguments but got " + obj.length + " arguments:\n" +line); + } +}); diff --git a/test/mjsunit/temporal/function-exist.js b/test/mjsunit/temporal/function-exist.js new file mode 100644 index 0000000000..3174316af7 --- /dev/null +++ b/test/mjsunit/temporal/function-exist.js @@ -0,0 +1,338 @@ +// Copyright 2021 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. +// Flags: --harmony-temporal + +// The following are generated by +// proposal-temporal/spec$ egrep "

" *.html|egrep ">Temporal\.|>get"|egrep "get|\(" | \ +// cut -d'>' -f2|cut -d'<' -f 1 |egrep -v "\. \. \." |sort -u + +const funcs = [ + + "get Temporal.Calendar.prototype.id", + "get Temporal.Duration.prototype.blank", + "get Temporal.Duration.prototype.days", + "get Temporal.Duration.prototype.hours", + "get Temporal.Duration.prototype.microseconds", + "get Temporal.Duration.prototype.milliseconds", + "get Temporal.Duration.prototype.minutes", + "get Temporal.Duration.prototype.months", + "get Temporal.Duration.prototype.nanoseconds", + "get Temporal.Duration.prototype.seconds", + "get Temporal.Duration.prototype.sign", + "get Temporal.Duration.prototype.weeks", + "get Temporal.Duration.prototype.years", + "get Temporal.Instant.prototype.epochMicroseconds", + "get Temporal.Instant.prototype.epochMilliseconds", + "get Temporal.Instant.prototype.epochNanoseconds", + "get Temporal.Instant.prototype.epochSeconds", + "get Temporal.PlainDate.prototype.calendar", + "get Temporal.PlainDate.prototype.day", + "get Temporal.PlainDate.prototype.dayOfWeek", + "get Temporal.PlainDate.prototype.dayOfYear", + "get Temporal.PlainDate.prototype.daysInMonth", + "get Temporal.PlainDate.prototype.daysInWeek", + "get Temporal.PlainDate.prototype.daysInYear", + "get Temporal.PlainDate.prototype.era", + "get Temporal.PlainDate.prototype.eraYear", + "get Temporal.PlainDate.prototype.inLeapYear", + "get Temporal.PlainDate.prototype.month", + "get Temporal.PlainDate.prototype.monthCode", + "get Temporal.PlainDate.prototype.monthsInYear", + "get Temporal.PlainDate.prototype.weekOfYear", + "get Temporal.PlainDate.prototype.year", + "get Temporal.PlainDateTime.prototype.calendar", + "get Temporal.PlainDateTime.prototype.day", + "get Temporal.PlainDateTime.prototype.dayOfWeek", + "get Temporal.PlainDateTime.prototype.dayOfYear", + "get Temporal.PlainDateTime.prototype.daysInMonth", + "get Temporal.PlainDateTime.prototype.daysInWeek", + "get Temporal.PlainDateTime.prototype.daysInYear", + "get Temporal.PlainDateTime.prototype.era", + "get Temporal.PlainDateTime.prototype.eraYear", + "get Temporal.PlainDateTime.prototype.hour", + "get Temporal.PlainDateTime.prototype.inLeapYear", + "get Temporal.PlainDateTime.prototype.microsecond", + "get Temporal.PlainDateTime.prototype.millisecond", + "get Temporal.PlainDateTime.prototype.minute", + "get Temporal.PlainDateTime.prototype.month", + "get Temporal.PlainDateTime.prototype.monthCode", + "get Temporal.PlainDateTime.prototype.monthsInYear", + "get Temporal.PlainDateTime.prototype.nanosecond", + "get Temporal.PlainDateTime.prototype.second", + "get Temporal.PlainDateTime.prototype.weekOfYear", + "get Temporal.PlainDateTime.prototype.year", + "get Temporal.PlainMonthDay.prototype.calendar", + "get Temporal.PlainMonthDay.prototype.day", + "get Temporal.PlainMonthDay.prototype.monthCode", + "get Temporal.PlainTime.prototype.calendar", + "get Temporal.PlainTime.prototype.hour", + "get Temporal.PlainTime.prototype.microsecond", + "get Temporal.PlainTime.prototype.millisecond", + "get Temporal.PlainTime.prototype.minute", + "get Temporal.PlainTime.prototype.nanosecond", + "get Temporal.PlainTime.prototype.second", + "get Temporal.PlainYearMonth.prototype.calendar", + "get Temporal.PlainYearMonth.prototype.daysInMonth", + "get Temporal.PlainYearMonth.prototype.daysInYear", + "get Temporal.PlainYearMonth.prototype.era", + "get Temporal.PlainYearMonth.prototype.eraYear", + "get Temporal.PlainYearMonth.prototype.inLeapYear", + "get Temporal.PlainYearMonth.prototype.month", + "get Temporal.PlainYearMonth.prototype.monthCode", + "get Temporal.PlainYearMonth.prototype.monthsInYear", + "get Temporal.PlainYearMonth.prototype.year", + "get Temporal.TimeZone.prototype.id", + "get Temporal.ZonedDateTime.prototype.calendar", + "get Temporal.ZonedDateTime.prototype.day", + "get Temporal.ZonedDateTime.prototype.dayOfWeek", + "get Temporal.ZonedDateTime.prototype.dayOfYear", + "get Temporal.ZonedDateTime.prototype.daysInMonth", + "get Temporal.ZonedDateTime.prototype.daysInWeek", + "get Temporal.ZonedDateTime.prototype.daysInYear", + "get Temporal.ZonedDateTime.prototype.epochMicroseconds", + "get Temporal.ZonedDateTime.prototype.epochMilliseconds", + "get Temporal.ZonedDateTime.prototype.epochNanoseconds", + "get Temporal.ZonedDateTime.prototype.epochSeconds", + "get Temporal.ZonedDateTime.prototype.era", + "get Temporal.ZonedDateTime.prototype.eraYear", + "get Temporal.ZonedDateTime.prototype.hour", + "get Temporal.ZonedDateTime.prototype.hoursInDay", + "get Temporal.ZonedDateTime.prototype.inLeapYear", + "get Temporal.ZonedDateTime.prototype.microsecond", + "get Temporal.ZonedDateTime.prototype.millisecond", + "get Temporal.ZonedDateTime.prototype.minute", + "get Temporal.ZonedDateTime.prototype.month", + "get Temporal.ZonedDateTime.prototype.monthCode", + "get Temporal.ZonedDateTime.prototype.monthsInYear", + "get Temporal.ZonedDateTime.prototype.nanosecond", + "get Temporal.ZonedDateTime.prototype.offset", + "get Temporal.ZonedDateTime.prototype.offsetNanoseconds", + "get Temporal.ZonedDateTime.prototype.second", + "get Temporal.ZonedDateTime.prototype.timeZone", + "get Temporal.ZonedDateTime.prototype.weekOfYear", + "get Temporal.ZonedDateTime.prototype.year", + "Temporal.Calendar.from ( _item_ )", + "Temporal.Calendar ( _id_ )", + "Temporal.Calendar.prototype.dateAdd ( _date_, _duration_ [ , _options_ ] )", + "Temporal.Calendar.prototype.dateFromFields ( _fields_ [ , _options_ ] )", + "Temporal.Calendar.prototype.dateUntil ( _one_, _two_ [ , _options_ ] )", + "Temporal.Calendar.prototype.dayOfWeek ( _dateOrDateTime_ )", + "Temporal.Calendar.prototype.dayOfWeek ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.dayOfYear ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.daysInMonth ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.daysInWeek ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.daysInYear ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.day ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.era ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.eraYear ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.fields ( _fields_ )", + "Temporal.Calendar.prototype.inLeapYear ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.mergeFields ( _fields_, _additionalFields_ )", + "Temporal.Calendar.prototype.monthCode ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.monthDayFromFields ( _fields_ [ , _options_ ] )", + "Temporal.Calendar.prototype.monthsInYear ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.month ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.toJSON ( )", + "Temporal.Calendar.prototype.toString ( )", + "Temporal.Calendar.prototype.weekOfYear ( _temporalDateLike_ )", + "Temporal.Calendar.prototype.yearMonthFromFields ( _fields_ [ , _options_ ] )", + "Temporal.Calendar.prototype.year ( _temporalDateLike_ )", + "Temporal.Duration.compare ( _one_, _two_ [ , _options_ ] )", + "Temporal.Duration.from ( _item_ )", + "Temporal.Duration.prototype.abs ( )", + "Temporal.Duration.prototype.add ( _other_ [ , _options_ ] )", + "Temporal.Duration.prototype.negated ( )", + "Temporal.Duration.prototype.round ( _options_ )", + "Temporal.Duration.prototype.subtract ( _other_ [ , _options_ ] )", + "Temporal.Duration.prototype.toJSON ( )", + "Temporal.Duration.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.Duration.prototype.toString ( [ _options_ ] )", + "Temporal.Duration.prototype.total ( _options_ )", + "Temporal.Duration.prototype.valueOf ( )", + "Temporal.Duration.prototype.with ( _temporalDurationLike_ )", + "Temporal.Duration ( [ _years_ [ , _months_ [ , _weeks_ [ , _days_ [ , _hours_ [ , _minutes_ [ , _seconds_ [ , _milliseconds_ [ , _microseconds_ [ , _nanoseconds_ ] ] ] ] ] ] ] ] ] ] )", + "Temporal.Instant.compare ( _one_, _two_ )", + "Temporal.Instant ( _epochNanoseconds_ )", + "Temporal.Instant.fromEpochMicroseconds ( _epochMicroseconds_ )", + "Temporal.Instant.fromEpochMilliseconds ( _epochMilliseconds_ )", + "Temporal.Instant.fromEpochNanoseconds ( _epochNanoseconds_ )", + "Temporal.Instant.fromEpochSeconds ( _epochSeconds_ )", + "Temporal.Instant.from ( _item_ )", + "Temporal.Instant.prototype.add ( _temporalDurationLike_ )", + "Temporal.Instant.prototype.equals ( _other_ )", + "Temporal.Instant.prototype.round ( _options_ )", + "Temporal.Instant.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.Instant.prototype.subtract ( _temporalDurationLike_ )", + "Temporal.Instant.prototype.toJSON ( )", + "Temporal.Instant.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.Instant.prototype.toString ( [ _options_ ] )", + "Temporal.Instant.prototype.toZonedDateTimeISO ( _item_ )", + "Temporal.Instant.prototype.toZonedDateTime ( _item_ )", + "Temporal.Instant.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.Instant.prototype.valueOf ( )", + "Temporal.Now.instant ( )", + "Temporal.Now.plainDate ( _calendar_ [ , _temporalTimeZoneLike_ ] )", + "Temporal.Now.plainDateISO ( [ _temporalTimeZoneLike_ ] )", + "Temporal.Now.plainDateTime ( _calendar_ [ , _temporalTimeZoneLike_ ] )", + "Temporal.Now.plainDateTimeISO ( [ _temporalTimeZoneLike_ ] )", + "Temporal.Now.plainTimeISO ( [ _temporalTimeZoneLike_ ] )", + "Temporal.Now.timeZone ( )", + "Temporal.Now.zonedDateTime ( _calendar_ [ , _temporalTimeZoneLike_ ] )", + "Temporal.Now.zonedDateTimeISO ( [ _temporalTimeZoneLike_ ] )", + "Temporal.PlainDate.compare ( _one_, _two_ )", + "Temporal.PlainDate.from ( _item_ [ , _options_ ] )", + "Temporal.PlainDate ( _isoYear_, _isoMonth_, _isoDay_ [ , _calendarLike_ ] )", + "Temporal.PlainDate.prototype.add ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainDate.prototype.equals ( _other_ )", + "Temporal.PlainDate.prototype.getISOFields ( )", + "Temporal.PlainDate.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.PlainDate.prototype.subtract ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainDate.prototype.toJSON ( )", + "Temporal.PlainDate.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.PlainDate.prototype.toPlainDateTime ( [ _temporalTime_ ] )", + "Temporal.PlainDate.prototype.toPlainMonthDay ( )", + "Temporal.PlainDate.prototype.toPlainYearMonth ( )", + "Temporal.PlainDate.prototype.toString ( [ _options_ ] )", + "Temporal.PlainDate.prototype.toZonedDateTime ( _item_ )", + "Temporal.PlainDate.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.PlainDate.prototype.valueOf ( )", + "Temporal.PlainDate.prototype.withCalendar ( _calendar_ )", + "Temporal.PlainDate.prototype.with ( _temporalDateLike_ [ , _options_ ] )", + "Temporal.PlainDateTime.compare ( _one_, _two_ )", + "Temporal.PlainDateTime.from ( _item_ [ , _options_ ] )", + "Temporal.PlainDateTime ( _isoYear_, _isoMonth_, _isoDay_ [ , _hour_ [ , _minute_ [ , _second_ [ , _millisecond_ [ , _microsecond_ [ , _nanosecond_ [ , _calendarLike_ ] ] ] ] ] ] ] )", + "Temporal.PlainDateTime.prototype.add ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainDateTime.prototype.equals ( _other_ )", + "Temporal.PlainDateTime.prototype.getISOFields ( )", + "Temporal.PlainDateTime.prototype.round ( _options_ )", + "Temporal.PlainDateTime.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.PlainDateTime.prototype.subtract ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainDateTime.prototype.toJSON ( )", + "Temporal.PlainDateTime.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.PlainDateTime.prototype.toPlainDate ( )", + "Temporal.PlainDateTime.prototype.toPlainMonthDay ( )", + "Temporal.PlainDateTime.prototype.toPlainTime ( )", + "Temporal.PlainDateTime.prototype.toPlainYearMonth ( )", + "Temporal.PlainDateTime.prototype.toString ( [ _options_ ] )", + "Temporal.PlainDateTime.prototype.toZonedDateTime ( _temporalTimeZoneLike_ [ , _options_ ] )", + "Temporal.PlainDateTime.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.PlainDateTime.prototype.valueOf ( )", + "Temporal.PlainDateTime.prototype.withCalendar ( _calendar_ )", + "Temporal.PlainDateTime.prototype.withPlainDate ( _plainDateLike_ )", + "Temporal.PlainDateTime.prototype.withPlainTime ( [ _plainTimeLike_ ] )", + "Temporal.PlainDateTime.prototype.with ( _temporalDateTimeLike_ [ , _options_ ] )", + "Temporal.PlainMonthDay.from ( _item_ [ , _options_ ] )", + "Temporal.PlainMonthDay ( _isoMonth_, _isoDay_ [ , _calendarLike_ [ , _referenceISOYear_ ] ] )", + "Temporal.PlainMonthDay.prototype.equals ( _other_ )", + "Temporal.PlainMonthDay.prototype.getISOFields ( )", + "Temporal.PlainMonthDay.prototype.toJSON ( )", + "Temporal.PlainMonthDay.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.PlainMonthDay.prototype.toPlainDate ( _item_ )", + "Temporal.PlainMonthDay.prototype.toString ( [ _options_ ] )", + "Temporal.PlainMonthDay.prototype.valueOf ( )", + "Temporal.PlainMonthDay.prototype.with ( _temporalMonthDayLike_ [ , _options_ ] )", + "Temporal.PlainTime.compare ( _one_, _two_ )", + "Temporal.PlainTime.from ( _item_ [ , _options_ ] )", + "Temporal.PlainTime ( [ _hour_ [ , _minute_ [ , _second_ [ , _millisecond_ [ , _microsecond_ [ , _nanosecond_ ] ] ] ] ] ] )", + "Temporal.PlainTime.prototype.add ( _temporalDurationLike_ )", + "Temporal.PlainTime.prototype.equals ( _other_ )", + "Temporal.PlainTime.prototype.getISOFields ( )", + "Temporal.PlainTime.prototype.round ( _options_ )", + "Temporal.PlainTime.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.PlainTime.prototype.subtract ( _temporalDurationLike_ )", + "Temporal.PlainTime.prototype.toJSON ( )", + "Temporal.PlainTime.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.PlainTime.prototype.toPlainDateTime ( _temporalDate_ )", + "Temporal.PlainTime.prototype.toString ( [ _options_ ] )", + "Temporal.PlainTime.prototype.toZonedDateTime ( _item_ )", + "Temporal.PlainTime.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.PlainTime.prototype.valueOf ( )", + "Temporal.PlainTime.prototype.with ( _temporalTimeLike_ [ , _options_ ] )", + "Temporal.PlainYearMonth.compare ( _one_, _two_ )", + "Temporal.PlainYearMonth.from ( _item_ [ , _options_ ] )", + "Temporal.PlainYearMonth ( _isoYear_, _isoMonth_ [ , _calendarLike_ [ , _referenceISODay_ ] ] )", + "Temporal.PlainYearMonth.prototype.add ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainYearMonth.prototype.equals ( _other_ )", + "Temporal.PlainYearMonth.prototype.getISOFields ( )", + "Temporal.PlainYearMonth.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.PlainYearMonth.prototype.subtract ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.PlainYearMonth.prototype.toJSON ( )", + "Temporal.PlainYearMonth.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.PlainYearMonth.prototype.toPlainDate ( _item_ )", + "Temporal.PlainYearMonth.prototype.toString ( [ _options_ ] )", + "Temporal.PlainYearMonth.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.PlainYearMonth.prototype.valueOf ( )", + "Temporal.PlainYearMonth.prototype.with ( _temporalYearMonthLike_ [ , _options_ ] )", + "Temporal.TimeZone.from ( _item_ )", + "Temporal.TimeZone ( _identifier_ )", + "Temporal.TimeZone.prototype.getInstantFor ( _dateTime_ [ , _options_ ] )", + "Temporal.TimeZone.prototype.getNextTransition ( _startingPoint_ )", + "Temporal.TimeZone.prototype.getOffsetNanosecondsFor ( _instant_ )", + "Temporal.TimeZone.prototype.getOffsetStringFor ( _instant_ )", + "Temporal.TimeZone.prototype.getPlainDateTimeFor ( _instant_ [ , _calendarLike_ ] )", + "Temporal.TimeZone.prototype.getPossibleInstantsFor ( _dateTime_ )", + "Temporal.TimeZone.prototype.getPreviousTransition ( _startingPoint_ )", + "Temporal.TimeZone.prototype.toJSON ( )", + "Temporal.TimeZone.prototype.toString ( )", + "Temporal.ZonedDateTime.compare ( _one_, _two_ )", + "Temporal.ZonedDateTime ( _epochNanoseconds_, _timeZoneLike_ [ , _calendarLike_ ] )", + "Temporal.ZonedDateTime.from ( _item_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.add ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.equals ( _other_ )", + "Temporal.ZonedDateTime.prototype.getISOFields ( )", + "Temporal.ZonedDateTime.prototype.round ( _options_ )", + "Temporal.ZonedDateTime.prototype.since ( _other_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.startOfDay ( )", + "Temporal.ZonedDateTime.prototype.subtract ( _temporalDurationLike_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.toInstant ( )", + "Temporal.ZonedDateTime.prototype.toJSON ( )", + "Temporal.ZonedDateTime.prototype.toLocaleString ( [ _locales_ [ , _options_ ] ] )", + "Temporal.ZonedDateTime.prototype.toPlainDate ( )", + "Temporal.ZonedDateTime.prototype.toPlainDateTime ( )", + "Temporal.ZonedDateTime.prototype.toPlainMonthDay ( )", + "Temporal.ZonedDateTime.prototype.toPlainTime ( )", + "Temporal.ZonedDateTime.prototype.toPlainYearMonth ( )", + "Temporal.ZonedDateTime.prototype.toString ( [ _options_ ] )", + "Temporal.ZonedDateTime.prototype.until ( _other_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.valueOf ( )", + "Temporal.ZonedDateTime.prototype.withCalendar ( _calendarLike_ )", + "Temporal.ZonedDateTime.prototype.withPlainDate ( _plainDateLike_ )", + "Temporal.ZonedDateTime.prototype.withPlainTime ( [ _plainTimeLike_ ] )", + "Temporal.ZonedDateTime.prototype.with ( _temporalZonedDateTimeLike_ [ , _options_ ] )", + "Temporal.ZonedDateTime.prototype.withTimeZone ( _timeZoneLike_ )", +]; + +// Find out the minimum number of arguments of that function +function numberOfArgs(tokens) { + let argc = 0; + for (i = 2; i < tokens.length; i++) { + if (tokens[i] == "[" || tokens[i] == ")") { + return argc; + } + if (tokens[i] != ",") { + argc++; + } + } +} +funcs.forEach(function(line) { + let tokens = line.split(" "); + if (tokens[0] == "get") { + let lastDot = tokens[1].lastIndexOf("."); + let prototype = eval(tokens[1].substring(0, lastDot)); + let property = tokens[1].substring(lastDot + 1); + let desc = Object.getOwnPropertyDescriptor(prototype, property); + assertNotEquals(desc, undefined, "Getter should be defined:" + line); + assertEquals(desc.set, undefined, "Setter should NOT be defined:" + line); + } else { + let obj = eval(tokens[0]); + // Verify the method is defined + assertNotEquals(obj, undefined, + "Method should be defined:" + line); + + // Verify the number of minimum arguments. + assertEquals(obj.length, numberOfArgs(tokens), + "Method should be defined with " + numberOfArgs(tokens) + + " arguments but got " + obj.length + " arguments:\n" +line); + } +}); diff --git a/tools/v8heapconst.py b/tools/v8heapconst.py index 03e84d3c28..596b4713a1 100644 --- a/tools/v8heapconst.py +++ b/tools/v8heapconst.py @@ -224,15 +224,25 @@ INSTANCE_TYPES = { 2122: "JS_SEGMENTER_TYPE", 2123: "JS_SEGMENTS_TYPE", 2124: "JS_STRING_ITERATOR_TYPE", - 2125: "JS_V8_BREAK_ITERATOR_TYPE", - 2126: "JS_WEAK_REF_TYPE", - 2127: "WASM_GLOBAL_OBJECT_TYPE", - 2128: "WASM_INSTANCE_OBJECT_TYPE", - 2129: "WASM_MEMORY_OBJECT_TYPE", - 2130: "WASM_MODULE_OBJECT_TYPE", - 2131: "WASM_TABLE_OBJECT_TYPE", - 2132: "WASM_TAG_OBJECT_TYPE", - 2133: "WASM_VALUE_OBJECT_TYPE", + 2125: "JS_TEMPORAL_CALENDAR_TYPE", + 2126: "JS_TEMPORAL_DURATION_TYPE", + 2127: "JS_TEMPORAL_INSTANT_TYPE", + 2128: "JS_TEMPORAL_PLAIN_DATE_TYPE", + 2129: "JS_TEMPORAL_PLAIN_DATE_TIME_TYPE", + 2130: "JS_TEMPORAL_PLAIN_MONTH_DAY_TYPE", + 2131: "JS_TEMPORAL_PLAIN_TIME_TYPE", + 2132: "JS_TEMPORAL_PLAIN_YEAR_MONTH_TYPE", + 2133: "JS_TEMPORAL_TIME_ZONE_TYPE", + 2134: "JS_TEMPORAL_ZONED_DATE_TIME_TYPE", + 2135: "JS_V8_BREAK_ITERATOR_TYPE", + 2136: "JS_WEAK_REF_TYPE", + 2137: "WASM_GLOBAL_OBJECT_TYPE", + 2138: "WASM_INSTANCE_OBJECT_TYPE", + 2139: "WASM_MEMORY_OBJECT_TYPE", + 2140: "WASM_MODULE_OBJECT_TYPE", + 2141: "WASM_TABLE_OBJECT_TYPE", + 2142: "WASM_TAG_OBJECT_TYPE", + 2143: "WASM_VALUE_OBJECT_TYPE", } # List of known V8 maps. @@ -331,66 +341,66 @@ KNOWN_MAPS = { ("read_only_space", 0x03215): (67, "BasicBlockCountersMarkerMap"), ("read_only_space", 0x03259): (91, "ArrayBoilerplateDescriptionMap"), ("read_only_space", 0x03359): (103, "InterceptorInfoMap"), - ("read_only_space", 0x05699): (76, "PromiseFulfillReactionJobTaskMap"), - ("read_only_space", 0x056c1): (77, "PromiseRejectReactionJobTaskMap"), - ("read_only_space", 0x056e9): (78, "CallableTaskMap"), - ("read_only_space", 0x05711): (79, "CallbackTaskMap"), - ("read_only_space", 0x05739): (80, "PromiseResolveThenableJobTaskMap"), - ("read_only_space", 0x05761): (83, "FunctionTemplateInfoMap"), - ("read_only_space", 0x05789): (84, "ObjectTemplateInfoMap"), - ("read_only_space", 0x057b1): (85, "AccessCheckInfoMap"), - ("read_only_space", 0x057d9): (86, "AccessorInfoMap"), - ("read_only_space", 0x05801): (87, "AccessorPairMap"), - ("read_only_space", 0x05829): (88, "AliasedArgumentsEntryMap"), - ("read_only_space", 0x05851): (89, "AllocationMementoMap"), - ("read_only_space", 0x05879): (92, "AsmWasmDataMap"), - ("read_only_space", 0x058a1): (93, "AsyncGeneratorRequestMap"), - ("read_only_space", 0x058c9): (94, "BreakPointMap"), - ("read_only_space", 0x058f1): (95, "BreakPointInfoMap"), - ("read_only_space", 0x05919): (96, "CachedTemplateObjectMap"), - ("read_only_space", 0x05941): (98, "ClassPositionsMap"), - ("read_only_space", 0x05969): (99, "DebugInfoMap"), - ("read_only_space", 0x05991): (102, "FunctionTemplateRareDataMap"), - ("read_only_space", 0x059b9): (104, "InterpreterDataMap"), - ("read_only_space", 0x059e1): (105, "ModuleRequestMap"), - ("read_only_space", 0x05a09): (106, "PromiseCapabilityMap"), - ("read_only_space", 0x05a31): (107, "PromiseReactionMap"), - ("read_only_space", 0x05a59): (108, "PropertyDescriptorObjectMap"), - ("read_only_space", 0x05a81): (109, "PrototypeInfoMap"), - ("read_only_space", 0x05aa9): (110, "RegExpBoilerplateDescriptionMap"), - ("read_only_space", 0x05ad1): (111, "ScriptMap"), - ("read_only_space", 0x05af9): (112, "SourceTextModuleInfoEntryMap"), - ("read_only_space", 0x05b21): (113, "StackFrameInfoMap"), - ("read_only_space", 0x05b49): (114, "TemplateObjectDescriptionMap"), - ("read_only_space", 0x05b71): (115, "Tuple2Map"), - ("read_only_space", 0x05b99): (116, "WasmExceptionTagMap"), - ("read_only_space", 0x05bc1): (117, "WasmIndirectFunctionTableMap"), - ("read_only_space", 0x05be9): (135, "SloppyArgumentsElementsMap"), - ("read_only_space", 0x05c11): (152, "DescriptorArrayMap"), - ("read_only_space", 0x05c39): (157, "UncompiledDataWithoutPreparseDataMap"), - ("read_only_space", 0x05c61): (156, "UncompiledDataWithPreparseDataMap"), - ("read_only_space", 0x05c89): (174, "OnHeapBasicBlockProfilerDataMap"), - ("read_only_space", 0x05cb1): (170, "InternalClassMap"), - ("read_only_space", 0x05cd9): (181, "SmiPairMap"), - ("read_only_space", 0x05d01): (180, "SmiBoxMap"), - ("read_only_space", 0x05d29): (146, "ExportedSubClassBaseMap"), - ("read_only_space", 0x05d51): (147, "ExportedSubClassMap"), - ("read_only_space", 0x05d79): (68, "AbstractInternalClassSubclass1Map"), - ("read_only_space", 0x05da1): (69, "AbstractInternalClassSubclass2Map"), - ("read_only_space", 0x05dc9): (134, "InternalClassWithSmiElementsMap"), - ("read_only_space", 0x05df1): (171, "InternalClassWithStructElementsMap"), - ("read_only_space", 0x05e19): (148, "ExportedSubClass2Map"), - ("read_only_space", 0x05e41): (182, "SortStateMap"), - ("read_only_space", 0x05e69): (160, "CallRefDataMap"), - ("read_only_space", 0x05e91): (90, "AllocationSiteWithWeakNextMap"), - ("read_only_space", 0x05eb9): (90, "AllocationSiteWithoutWeakNextMap"), - ("read_only_space", 0x05ee1): (81, "LoadHandler1Map"), - ("read_only_space", 0x05f09): (81, "LoadHandler2Map"), - ("read_only_space", 0x05f31): (81, "LoadHandler3Map"), - ("read_only_space", 0x05f59): (82, "StoreHandler0Map"), - ("read_only_space", 0x05f81): (82, "StoreHandler1Map"), - ("read_only_space", 0x05fa9): (82, "StoreHandler2Map"), - ("read_only_space", 0x05fd1): (82, "StoreHandler3Map"), + ("read_only_space", 0x05bf1): (76, "PromiseFulfillReactionJobTaskMap"), + ("read_only_space", 0x05c19): (77, "PromiseRejectReactionJobTaskMap"), + ("read_only_space", 0x05c41): (78, "CallableTaskMap"), + ("read_only_space", 0x05c69): (79, "CallbackTaskMap"), + ("read_only_space", 0x05c91): (80, "PromiseResolveThenableJobTaskMap"), + ("read_only_space", 0x05cb9): (83, "FunctionTemplateInfoMap"), + ("read_only_space", 0x05ce1): (84, "ObjectTemplateInfoMap"), + ("read_only_space", 0x05d09): (85, "AccessCheckInfoMap"), + ("read_only_space", 0x05d31): (86, "AccessorInfoMap"), + ("read_only_space", 0x05d59): (87, "AccessorPairMap"), + ("read_only_space", 0x05d81): (88, "AliasedArgumentsEntryMap"), + ("read_only_space", 0x05da9): (89, "AllocationMementoMap"), + ("read_only_space", 0x05dd1): (92, "AsmWasmDataMap"), + ("read_only_space", 0x05df9): (93, "AsyncGeneratorRequestMap"), + ("read_only_space", 0x05e21): (94, "BreakPointMap"), + ("read_only_space", 0x05e49): (95, "BreakPointInfoMap"), + ("read_only_space", 0x05e71): (96, "CachedTemplateObjectMap"), + ("read_only_space", 0x05e99): (98, "ClassPositionsMap"), + ("read_only_space", 0x05ec1): (99, "DebugInfoMap"), + ("read_only_space", 0x05ee9): (102, "FunctionTemplateRareDataMap"), + ("read_only_space", 0x05f11): (104, "InterpreterDataMap"), + ("read_only_space", 0x05f39): (105, "ModuleRequestMap"), + ("read_only_space", 0x05f61): (106, "PromiseCapabilityMap"), + ("read_only_space", 0x05f89): (107, "PromiseReactionMap"), + ("read_only_space", 0x05fb1): (108, "PropertyDescriptorObjectMap"), + ("read_only_space", 0x05fd9): (109, "PrototypeInfoMap"), + ("read_only_space", 0x06001): (110, "RegExpBoilerplateDescriptionMap"), + ("read_only_space", 0x06029): (111, "ScriptMap"), + ("read_only_space", 0x06051): (112, "SourceTextModuleInfoEntryMap"), + ("read_only_space", 0x06079): (113, "StackFrameInfoMap"), + ("read_only_space", 0x060a1): (114, "TemplateObjectDescriptionMap"), + ("read_only_space", 0x060c9): (115, "Tuple2Map"), + ("read_only_space", 0x060f1): (116, "WasmExceptionTagMap"), + ("read_only_space", 0x06119): (117, "WasmIndirectFunctionTableMap"), + ("read_only_space", 0x06141): (135, "SloppyArgumentsElementsMap"), + ("read_only_space", 0x06169): (152, "DescriptorArrayMap"), + ("read_only_space", 0x06191): (157, "UncompiledDataWithoutPreparseDataMap"), + ("read_only_space", 0x061b9): (156, "UncompiledDataWithPreparseDataMap"), + ("read_only_space", 0x061e1): (174, "OnHeapBasicBlockProfilerDataMap"), + ("read_only_space", 0x06209): (170, "InternalClassMap"), + ("read_only_space", 0x06231): (181, "SmiPairMap"), + ("read_only_space", 0x06259): (180, "SmiBoxMap"), + ("read_only_space", 0x06281): (146, "ExportedSubClassBaseMap"), + ("read_only_space", 0x062a9): (147, "ExportedSubClassMap"), + ("read_only_space", 0x062d1): (68, "AbstractInternalClassSubclass1Map"), + ("read_only_space", 0x062f9): (69, "AbstractInternalClassSubclass2Map"), + ("read_only_space", 0x06321): (134, "InternalClassWithSmiElementsMap"), + ("read_only_space", 0x06349): (171, "InternalClassWithStructElementsMap"), + ("read_only_space", 0x06371): (148, "ExportedSubClass2Map"), + ("read_only_space", 0x06399): (182, "SortStateMap"), + ("read_only_space", 0x063c1): (160, "CallRefDataMap"), + ("read_only_space", 0x063e9): (90, "AllocationSiteWithWeakNextMap"), + ("read_only_space", 0x06411): (90, "AllocationSiteWithoutWeakNextMap"), + ("read_only_space", 0x06439): (81, "LoadHandler1Map"), + ("read_only_space", 0x06461): (81, "LoadHandler2Map"), + ("read_only_space", 0x06489): (81, "LoadHandler3Map"), + ("read_only_space", 0x064b1): (82, "StoreHandler0Map"), + ("read_only_space", 0x064d9): (82, "StoreHandler1Map"), + ("read_only_space", 0x06501): (82, "StoreHandler2Map"), + ("read_only_space", 0x06529): (82, "StoreHandler3Map"), ("map_space", 0x02119): (1057, "ExternalMap"), ("map_space", 0x02141): (2114, "JSMessageObjectMap"), }