[Temporal] Add Calendar.prototype.fields
Spec Text: https://tc39.es/proposal-temporal/#sec-temporal.calendar.prototype.fields Bug: v8:11544 Change-Id: I8df987ddbbf08372da637d7c4620c428fce97cae Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3534619 Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Frank Tang <ftang@chromium.org> Cr-Commit-Position: refs/heads/main@{#80127}
This commit is contained in:
parent
3ae42771de
commit
5c3627754e
@ -1998,6 +1998,7 @@ filegroup(
|
||||
"src/runtime/runtime-shadow-realm.cc",
|
||||
"src/runtime/runtime-strings.cc",
|
||||
"src/runtime/runtime-symbol.cc",
|
||||
"src/runtime/runtime-temporal.cc",
|
||||
"src/runtime/runtime-test.cc",
|
||||
"src/runtime/runtime-trace.cc",
|
||||
"src/runtime/runtime-typedarray.cc",
|
||||
|
1
BUILD.gn
1
BUILD.gn
@ -4462,6 +4462,7 @@ v8_source_set("v8_base_without_compiler") {
|
||||
"src/runtime/runtime-shadow-realm.cc",
|
||||
"src/runtime/runtime-strings.cc",
|
||||
"src/runtime/runtime-symbol.cc",
|
||||
"src/runtime/runtime-temporal.cc",
|
||||
"src/runtime/runtime-test.cc",
|
||||
"src/runtime/runtime-trace.cc",
|
||||
"src/runtime/runtime-typedarray.cc",
|
||||
|
@ -1649,7 +1649,7 @@ namespace internal {
|
||||
/* Temporal #sec-temporal.calendar.prototype.inleapyear */ \
|
||||
CPP(TemporalCalendarPrototypeInLeapYear) \
|
||||
/* Temporal #sec-temporal.calendar.prototype.fields */ \
|
||||
CPP(TemporalCalendarPrototypeFields) \
|
||||
TFJ(TemporalCalendarPrototypeFields, kJSArgcReceiverSlots, kIterable) \
|
||||
/* Temporal #sec-temporal.calendar.prototype.mergefields */ \
|
||||
CPP(TemporalCalendarPrototypeMergeFields) \
|
||||
/* Temporal #sec-temporal.calendar.prototype.tostring */ \
|
||||
|
@ -18,11 +18,117 @@ class TemporalBuiltinsAssembler : public IteratorBuiltinsAssembler {
|
||||
explicit TemporalBuiltinsAssembler(compiler::CodeAssemblerState* state)
|
||||
: IteratorBuiltinsAssembler(state) {}
|
||||
|
||||
// Step 3 and later of #sec-temporal.calendar.prototype.fields
|
||||
TNode<JSArray> CalendarFieldsArrayFromIterable(
|
||||
TNode<Context> context, TNode<JSTemporalCalendar> calendar,
|
||||
TNode<Object> iterable);
|
||||
|
||||
// For the use inside Temporal GetPossibleInstantFor
|
||||
TNode<FixedArray> TemporalInstantFixedArrayFromIterable(
|
||||
TNode<Context> context, TNode<Object> iterable);
|
||||
};
|
||||
|
||||
// Step 3 and later of
|
||||
// #sec-temporal.calendar.prototype.fields
|
||||
TNode<JSArray> TemporalBuiltinsAssembler::CalendarFieldsArrayFromIterable(
|
||||
TNode<Context> context, TNode<JSTemporalCalendar> calendar,
|
||||
TNode<Object> iterable) {
|
||||
Label done(this), add_fields(this, Label::kDeferred);
|
||||
// 4. Let iteratorRecord be ? GetIterator(items).
|
||||
|
||||
// 5. Let fieldNames be a new empty List.
|
||||
GrowableFixedArray field_names(state());
|
||||
|
||||
// 6. Repeat, while next is not false,
|
||||
Iterate(
|
||||
context, iterable,
|
||||
[&](TNode<Object> next_value) {
|
||||
// Handled by Iterate:
|
||||
// a. Set next to ? IteratorStep(iteratorRecord).
|
||||
// b. If next is not false, then
|
||||
// i. Let nextValue be ? IteratorValue(next).
|
||||
|
||||
// ii. If Type(nextValue) is not String, then
|
||||
Label if_isnotstringtype(this, Label::kDeferred),
|
||||
if_rangeerror(this, Label::kDeferred), loop_body_end(this);
|
||||
GotoIf(TaggedIsSmi(next_value), &if_isnotstringtype);
|
||||
TNode<Uint16T> next_value_type = LoadInstanceType(CAST(next_value));
|
||||
GotoIfNot(IsStringInstanceType(next_value_type), &if_isnotstringtype);
|
||||
|
||||
// Step iii and iv see IsInvalidTemporalCalendarField
|
||||
// TODO(ftang) Optimize this and remove the runtime call by keeping a
|
||||
// bitfield of "fields seen so far" and doing the string comparisons +
|
||||
// bitfield access directly here.
|
||||
GotoIf(IsTrue(CallRuntime(Runtime::kIsInvalidTemporalCalendarField,
|
||||
context, next_value,
|
||||
field_names.ToFixedArray())),
|
||||
&if_rangeerror);
|
||||
|
||||
// v. Append nextValue to the end of the List fieldNames.
|
||||
field_names.Push(next_value);
|
||||
|
||||
Goto(&loop_body_end);
|
||||
|
||||
// 6.b.ii
|
||||
BIND(&if_isnotstringtype);
|
||||
{
|
||||
// 1. Let completion be ThrowCompletion(a newly created TypeError
|
||||
// object).
|
||||
|
||||
CallRuntime(Runtime::kThrowTypeError, context,
|
||||
SmiConstant(MessageTemplate::kIterableYieldedNonString),
|
||||
next_value);
|
||||
// 2. Return ? IteratorClose(iteratorRecord, completion). (handled by
|
||||
// Iterate).
|
||||
Unreachable();
|
||||
}
|
||||
|
||||
// 6.b.ii
|
||||
BIND(&if_rangeerror);
|
||||
{
|
||||
// 1. Let completion be ThrowCompletion(a newly created RangeError
|
||||
// object).
|
||||
|
||||
CallRuntime(Runtime::kThrowRangeError, context,
|
||||
SmiConstant(MessageTemplate::kInvalidTimeValue),
|
||||
next_value);
|
||||
// 2. Return ? IteratorClose(iteratorRecord, completion). (handled by
|
||||
// Iterate).
|
||||
Unreachable();
|
||||
}
|
||||
BIND(&loop_body_end);
|
||||
},
|
||||
{field_names.var_array(), field_names.var_length(),
|
||||
field_names.var_capacity()});
|
||||
{
|
||||
// Step 7 and 8 of
|
||||
// of #sup-temporal.calendar.prototype.fields.
|
||||
// Notice this spec text is in the Chapter 15 of the #sup part not #sec
|
||||
// part.
|
||||
// 7. If calendar.[[Identifier]] is "iso8601", then
|
||||
const TNode<Uint32T> flags =
|
||||
LoadObjectField<Uint32T>(calendar, JSTemporalCalendar::kFlagsOffset);
|
||||
// calendar is "iso8601" while the index of calendar is 0
|
||||
const TNode<IntPtrT> index = Signed(
|
||||
DecodeWordFromWord32<JSTemporalCalendar::CalendarIndexBits>(flags));
|
||||
Branch(IntPtrEqual(index, IntPtrConstant(0)), &done, &add_fields);
|
||||
BIND(&add_fields);
|
||||
{
|
||||
// Step 8.a. Let result be the result of implementation-defined processing
|
||||
// of fieldNames and calendar.[[Identifier]]. We just always add "era" and
|
||||
// "eraYear" for other calendar.
|
||||
|
||||
TNode<String> era_string = StringConstant("era");
|
||||
field_names.Push(era_string);
|
||||
TNode<String> eraYear_string = StringConstant("eraYear");
|
||||
field_names.Push(eraYear_string);
|
||||
}
|
||||
Goto(&done);
|
||||
}
|
||||
BIND(&done);
|
||||
return field_names.ToJSArray(context);
|
||||
}
|
||||
|
||||
// #sec-iterabletolistoftype
|
||||
TNode<FixedArray>
|
||||
TemporalBuiltinsAssembler::TemporalInstantFixedArrayFromIterable(
|
||||
@ -91,5 +197,26 @@ TF_BUILTIN(TemporalInstantFixedArrayFromIterable, TemporalBuiltinsAssembler) {
|
||||
Return(TemporalInstantFixedArrayFromIterable(context, iterable));
|
||||
}
|
||||
|
||||
// #sec-temporal.calendar.prototype.fields
|
||||
TF_BUILTIN(TemporalCalendarPrototypeFields, TemporalBuiltinsAssembler) {
|
||||
auto context = Parameter<Context>(Descriptor::kContext);
|
||||
auto argc = UncheckedParameter<Int32T>(Descriptor::kJSActualArgumentsCount);
|
||||
|
||||
CodeStubArguments args(this, argc);
|
||||
|
||||
// 1. Let calendar be this value.
|
||||
TNode<Object> receiver = args.GetReceiver();
|
||||
|
||||
// 2. Perform ? RequireInternalSlot(calendar,
|
||||
// [[InitializedTemporalCalendar]]).
|
||||
ThrowIfNotInstanceType(context, receiver, JS_TEMPORAL_CALENDAR_TYPE,
|
||||
"Temporal.Calendar.prototype.fields");
|
||||
TNode<JSTemporalCalendar> calendar = CAST(receiver);
|
||||
|
||||
// Step 3 and later is inside CalendarFieldsArrayFromIterable
|
||||
TNode<Object> iterable = args.GetOptionalArgumentValue(0);
|
||||
Return(CalendarFieldsArrayFromIterable(context, calendar, iterable));
|
||||
}
|
||||
|
||||
} // namespace internal
|
||||
} // namespace v8
|
||||
|
@ -317,10 +317,6 @@ TO_BE_IMPLEMENTED(TemporalCalendarPrototypeWeekOfYear)
|
||||
/* Temporal #sec-temporal.calendar.prototype.tojson */
|
||||
TO_BE_IMPLEMENTED(TemporalCalendarPrototypeToJSON)
|
||||
|
||||
// to be switch to TFJ later
|
||||
/* Temporal #sec-temporal.calendar.prototype.fields */
|
||||
TO_BE_IMPLEMENTED(TemporalCalendarPrototypeFields)
|
||||
|
||||
#ifdef V8_INTL_SUPPORT
|
||||
/* Temporal */
|
||||
/* Temporal #sec-temporal.calendar.prototype.era */
|
||||
|
@ -6605,5 +6605,39 @@ MaybeHandle<JSTemporalInstant> JSTemporalInstant::From(Isolate* isolate,
|
||||
return ToTemporalInstant(isolate, item, method_name);
|
||||
}
|
||||
|
||||
namespace temporal {
|
||||
|
||||
// Step iii and iv of #sec-temporal.calendar.prototype.fields
|
||||
MaybeHandle<Oddball> IsInvalidTemporalCalendarField(
|
||||
Isolate* isolate, Handle<String> next_value,
|
||||
Handle<FixedArray> fields_name) {
|
||||
Factory* factory = isolate->factory();
|
||||
// iii. iii. If fieldNames contains nextValue, then
|
||||
for (int i = 0; i < fields_name->length(); i++) {
|
||||
Object item = fields_name->get(i);
|
||||
CHECK(item.IsString());
|
||||
if (String::Equals(isolate, next_value,
|
||||
handle(String::cast(item), isolate))) {
|
||||
return isolate->factory()->true_value();
|
||||
}
|
||||
}
|
||||
// iv. If nextValue is not one of "year", "month", "monthCode", "day", "hour",
|
||||
// "minute", "second", "millisecond", "microsecond", "nanosecond", then
|
||||
if (!(String::Equals(isolate, next_value, factory->year_string()) ||
|
||||
String::Equals(isolate, next_value, factory->month_string()) ||
|
||||
String::Equals(isolate, next_value, factory->monthCode_string()) ||
|
||||
String::Equals(isolate, next_value, factory->day_string()) ||
|
||||
String::Equals(isolate, next_value, factory->hour_string()) ||
|
||||
String::Equals(isolate, next_value, factory->minute_string()) ||
|
||||
String::Equals(isolate, next_value, factory->second_string()) ||
|
||||
String::Equals(isolate, next_value, factory->millisecond_string()) ||
|
||||
String::Equals(isolate, next_value, factory->microsecond_string()) ||
|
||||
String::Equals(isolate, next_value, factory->nanosecond_string()))) {
|
||||
return isolate->factory()->true_value();
|
||||
}
|
||||
return isolate->factory()->false_value();
|
||||
}
|
||||
|
||||
} // namespace temporal
|
||||
} // namespace internal
|
||||
} // namespace v8
|
||||
|
@ -105,7 +105,7 @@ class JSTemporalCalendar
|
||||
// #sec-temporal.calendar.prototype.tostring
|
||||
static MaybeHandle<String> ToString(Isolate* isolate,
|
||||
Handle<JSTemporalCalendar> calendar,
|
||||
const char* method);
|
||||
const char* method_name);
|
||||
|
||||
DECL_PRINTER(JSTemporalCalendar)
|
||||
|
||||
@ -363,7 +363,7 @@ class JSTemporalTimeZone
|
||||
// #sec-temporal.timezone.prototype.tostring
|
||||
static MaybeHandle<Object> ToString(Isolate* isolate,
|
||||
Handle<JSTemporalTimeZone> time_zone,
|
||||
const char* method);
|
||||
const char* method_name);
|
||||
|
||||
DECL_PRINTER(JSTemporalTimeZone)
|
||||
|
||||
@ -479,7 +479,7 @@ BuiltinTimeZoneGetPlainDateTimeFor(Isolate* isolate,
|
||||
Handle<JSReceiver> time_zone,
|
||||
Handle<JSTemporalInstant> instant,
|
||||
Handle<JSReceiver> calendar,
|
||||
const char* method);
|
||||
const char* method_name);
|
||||
|
||||
V8_WARN_UNUSED_RESULT MaybeHandle<Object> InvokeCalendarMethod(
|
||||
Isolate* isolate, Handle<JSReceiver> calendar, Handle<String> name,
|
||||
@ -487,11 +487,14 @@ V8_WARN_UNUSED_RESULT MaybeHandle<Object> InvokeCalendarMethod(
|
||||
|
||||
V8_WARN_UNUSED_RESULT MaybeHandle<JSReceiver> ToTemporalCalendar(
|
||||
Isolate* isolate, Handle<Object> temporal_calendar_like,
|
||||
const char* method);
|
||||
const char* method_name);
|
||||
|
||||
V8_WARN_UNUSED_RESULT MaybeHandle<JSReceiver> ToTemporalTimeZone(
|
||||
Isolate* isolate, Handle<Object> temporal_time_zone_like,
|
||||
const char* method);
|
||||
const char* method_name);
|
||||
|
||||
V8_WARN_UNUSED_RESULT MaybeHandle<Oddball> IsInvalidTemporalCalendarField(
|
||||
Isolate* isolate, Handle<String> string, Handle<FixedArray> field_names);
|
||||
|
||||
} // namespace temporal
|
||||
} // namespace internal
|
||||
|
26
src/runtime/runtime-temporal.cc
Normal file
26
src/runtime/runtime-temporal.cc
Normal file
@ -0,0 +1,26 @@
|
||||
// Copyright 2022 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/base/bits.h"
|
||||
#include "src/execution/arguments-inl.h"
|
||||
#include "src/execution/isolate-inl.h"
|
||||
#include "src/init/bootstrapper.h"
|
||||
#include "src/logging/counters.h"
|
||||
#include "src/objects/js-temporal-objects.h"
|
||||
#include "src/runtime/runtime-utils.h"
|
||||
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
RUNTIME_FUNCTION(Runtime_IsInvalidTemporalCalendarField) {
|
||||
HandleScope scope(isolate);
|
||||
DCHECK_EQ(2, args.length());
|
||||
Handle<String> s = args.at<String>(0);
|
||||
Handle<FixedArray> f = args.at<FixedArray>(1);
|
||||
RETURN_RESULT_OR_FAILURE(
|
||||
isolate, temporal::IsInvalidTemporalCalendarField(isolate, s, f));
|
||||
}
|
||||
|
||||
} // namespace internal
|
||||
} // namespace v8
|
@ -470,6 +470,9 @@ namespace internal {
|
||||
F(SymbolDescriptiveString, 1, 1) \
|
||||
F(SymbolIsPrivate, 1, 1)
|
||||
|
||||
#define FOR_EACH_INTRINSIC_TEMPORAL(F, I) \
|
||||
F(IsInvalidTemporalCalendarField, 2, 1)
|
||||
|
||||
#define FOR_EACH_INTRINSIC_TEST(F, I) \
|
||||
F(Abort, 1, 1) \
|
||||
F(AbortCSADcheck, 1, 1) \
|
||||
@ -702,6 +705,7 @@ namespace internal {
|
||||
FOR_EACH_INTRINSIC_SHADOW_REALM(F, I) \
|
||||
FOR_EACH_INTRINSIC_STRINGS(F, I) \
|
||||
FOR_EACH_INTRINSIC_SYMBOL(F, I) \
|
||||
FOR_EACH_INTRINSIC_TEMPORAL(F, I) \
|
||||
FOR_EACH_INTRINSIC_TEST(F, I) \
|
||||
FOR_EACH_INTRINSIC_TYPEDARRAY(F, I) \
|
||||
IF_WASM(FOR_EACH_INTRINSIC_WASM, F, I) \
|
||||
|
@ -49,7 +49,6 @@
|
||||
'temporal/calendar-date-from-fields': [FAIL],
|
||||
'temporal/calendar-date-until': [FAIL],
|
||||
'temporal/calendar-day': [FAIL],
|
||||
'temporal/calendar-fields': [FAIL],
|
||||
'temporal/calendar-month': [FAIL],
|
||||
'temporal/calendar-month-code': [FAIL],
|
||||
'temporal/calendar-month-day-from-fields': [FAIL],
|
||||
|
@ -507,33 +507,12 @@
|
||||
'built-ins/Temporal/Calendar/prototype/day/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/day/month-day': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/dayOfWeek/basic': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/dayOfWeek/calendar-temporal-object': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/dayOfWeek/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/dayOfYear/basic': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/dayOfYear/calendar-temporal-object': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/dayOfYear/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInMonth/basic': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInMonth/calendar-temporal-object': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInMonth/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInWeek/basic': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInWeek/calendar-temporal-object': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInWeek/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInYear/basic': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInYear/calendar-temporal-object': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/daysInYear/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/day/string': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/day/throw-range-error-ToTemporalDate': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/fields/argument-iterable-not-array': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/fields/argument-throws-duplicate-keys': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/fields/argument-throws-invalid-keys': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/fields/branding': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/fields/long-input': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/fields/non-string-element-throws': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/fields/repeated-throw': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/fields/reverse': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/inLeapYear/basic': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/inLeapYear/calendar-temporal-object': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/inLeapYear/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/month/argument-string-with-utc-designator': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/month/argument-zoneddatetime-timezone-getoffsetnanosecondsfor-non-integer': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/month/argument-zoneddatetime-timezone-getoffsetnanosecondsfor-not-callable': [FAIL],
|
||||
@ -569,9 +548,6 @@
|
||||
'built-ins/Temporal/Calendar/prototype/monthDayFromFields/overflow-wrong-type': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/month/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/month/month-day-throw-type-error': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/monthsInYear/basic': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/monthsInYear/calendar-temporal-object': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/monthsInYear/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/month/string': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/month/throw-range-error-ToTemporalDate': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/month/year-month': [FAIL],
|
||||
@ -587,8 +563,6 @@
|
||||
'built-ins/Temporal/Calendar/prototype/weekOfYear/cross-year': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/weekOfYear/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/year/basic': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/year/calendar-temporal-object': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/year/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/yearMonthFromFields/branding': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/yearMonthFromFields/fields-not-object': [FAIL],
|
||||
'built-ins/Temporal/Calendar/prototype/yearMonthFromFields/infinity-throws-rangeerror': [FAIL],
|
||||
@ -903,12 +877,9 @@
|
||||
'built-ins/Temporal/PlainDate/from/argument-plaindate': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/argument-plaindatetime': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/argument-string': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/calendar-temporal-object': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/infinity-throws-rangeerror': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/limits': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/options-undefined': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/order-of-operations': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/overflow-invalid-string': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/overflow-undefined': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/overflow-wrong-type': [FAIL],
|
||||
'built-ins/Temporal/PlainDate/from/subclassing-ignored': [FAIL],
|
||||
@ -2231,11 +2202,6 @@
|
||||
'intl402/Temporal/Calendar/prototype/dateFromFields/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/dateUntil/argument-infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/day/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/dayOfWeek/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/dayOfYear/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/daysInMonth/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/daysInWeek/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/daysInYear/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/era/argument-string-with-utc-designator': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/era/argument-zoneddatetime-timezone-getoffsetnanosecondsfor-not-callable': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/era/branding': [FAIL],
|
||||
@ -2246,13 +2212,10 @@
|
||||
'intl402/Temporal/Calendar/prototype/eraYear/branding': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/eraYear/calendar-datefromfields-called-with-options-undefined': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/eraYear/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/inLeapYear/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/monthCode/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/monthDayFromFields/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/month/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/monthsInYear/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/weekOfYear/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/year/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Calendar/prototype/yearMonthFromFields/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Duration/prototype/add/relativeto-infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/Duration/prototype/round/relativeto-infinity-throws-rangeerror': [FAIL],
|
||||
@ -2263,7 +2226,6 @@
|
||||
'intl402/Temporal/Instant/prototype/toLocaleString/options-undefined': [FAIL],
|
||||
'intl402/Temporal/Now/plainDateTimeISO/timezone-string-datetime': [FAIL],
|
||||
'intl402/Temporal/PlainDate/compare/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/PlainDate/from/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/PlainDate/prototype/equals/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/PlainDate/prototype/since/infinity-throws-rangeerror': [FAIL],
|
||||
'intl402/Temporal/PlainDate/prototype/toLocaleString/locales-undefined': [FAIL],
|
||||
|
@ -538,28 +538,28 @@ KNOWN_OBJECTS = {
|
||||
("old_space", 0x04b39): "StringSplitCache",
|
||||
("old_space", 0x04f41): "RegExpMultipleCache",
|
||||
("old_space", 0x05349): "BuiltinsConstantsTable",
|
||||
("old_space", 0x05779): "AsyncFunctionAwaitRejectSharedFun",
|
||||
("old_space", 0x0579d): "AsyncFunctionAwaitResolveSharedFun",
|
||||
("old_space", 0x057c1): "AsyncGeneratorAwaitRejectSharedFun",
|
||||
("old_space", 0x057e5): "AsyncGeneratorAwaitResolveSharedFun",
|
||||
("old_space", 0x05809): "AsyncGeneratorYieldResolveSharedFun",
|
||||
("old_space", 0x0582d): "AsyncGeneratorReturnResolveSharedFun",
|
||||
("old_space", 0x05851): "AsyncGeneratorReturnClosedRejectSharedFun",
|
||||
("old_space", 0x05875): "AsyncGeneratorReturnClosedResolveSharedFun",
|
||||
("old_space", 0x05899): "AsyncIteratorValueUnwrapSharedFun",
|
||||
("old_space", 0x058bd): "PromiseAllResolveElementSharedFun",
|
||||
("old_space", 0x058e1): "PromiseAllSettledResolveElementSharedFun",
|
||||
("old_space", 0x05905): "PromiseAllSettledRejectElementSharedFun",
|
||||
("old_space", 0x05929): "PromiseAnyRejectElementSharedFun",
|
||||
("old_space", 0x0594d): "PromiseCapabilityDefaultRejectSharedFun",
|
||||
("old_space", 0x05971): "PromiseCapabilityDefaultResolveSharedFun",
|
||||
("old_space", 0x05995): "PromiseCatchFinallySharedFun",
|
||||
("old_space", 0x059b9): "PromiseGetCapabilitiesExecutorSharedFun",
|
||||
("old_space", 0x059dd): "PromiseThenFinallySharedFun",
|
||||
("old_space", 0x05a01): "PromiseThrowerFinallySharedFun",
|
||||
("old_space", 0x05a25): "PromiseValueThunkFinallySharedFun",
|
||||
("old_space", 0x05a49): "ProxyRevokeSharedFun",
|
||||
("old_space", 0x05a6d): "ShadowRealmImportValueFulfilledSFI",
|
||||
("old_space", 0x0577d): "AsyncFunctionAwaitRejectSharedFun",
|
||||
("old_space", 0x057a1): "AsyncFunctionAwaitResolveSharedFun",
|
||||
("old_space", 0x057c5): "AsyncGeneratorAwaitRejectSharedFun",
|
||||
("old_space", 0x057e9): "AsyncGeneratorAwaitResolveSharedFun",
|
||||
("old_space", 0x0580d): "AsyncGeneratorYieldResolveSharedFun",
|
||||
("old_space", 0x05831): "AsyncGeneratorReturnResolveSharedFun",
|
||||
("old_space", 0x05855): "AsyncGeneratorReturnClosedRejectSharedFun",
|
||||
("old_space", 0x05879): "AsyncGeneratorReturnClosedResolveSharedFun",
|
||||
("old_space", 0x0589d): "AsyncIteratorValueUnwrapSharedFun",
|
||||
("old_space", 0x058c1): "PromiseAllResolveElementSharedFun",
|
||||
("old_space", 0x058e5): "PromiseAllSettledResolveElementSharedFun",
|
||||
("old_space", 0x05909): "PromiseAllSettledRejectElementSharedFun",
|
||||
("old_space", 0x0592d): "PromiseAnyRejectElementSharedFun",
|
||||
("old_space", 0x05951): "PromiseCapabilityDefaultRejectSharedFun",
|
||||
("old_space", 0x05975): "PromiseCapabilityDefaultResolveSharedFun",
|
||||
("old_space", 0x05999): "PromiseCatchFinallySharedFun",
|
||||
("old_space", 0x059bd): "PromiseGetCapabilitiesExecutorSharedFun",
|
||||
("old_space", 0x059e1): "PromiseThenFinallySharedFun",
|
||||
("old_space", 0x05a05): "PromiseThrowerFinallySharedFun",
|
||||
("old_space", 0x05a29): "PromiseValueThunkFinallySharedFun",
|
||||
("old_space", 0x05a4d): "ProxyRevokeSharedFun",
|
||||
("old_space", 0x05a71): "ShadowRealmImportValueFulfilledSFI",
|
||||
}
|
||||
|
||||
# Lower 32 bits of first page addresses for various heap spaces.
|
||||
|
Loading…
Reference in New Issue
Block a user