Commit 93014366 authored by Frank Tang's avatar Frank Tang Committed by Commit Bot

[Intl] Implement intl-datetime-style

See https://github.com/tc39/proposal-intl-datetime-style
Design Doc: https://goo.gl/v7n7zV


Bug: v8:8702
Change-Id: If45a901e369003ded6c0c690a65f0429800d5ecc
Reviewed-on: https://chromium-review.googlesource.com/c/1417372
Commit-Queue: Frank Tang <ftang@chromium.org>
Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59264}
parent 73aaa19f
......@@ -4212,6 +4212,11 @@ EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_regexp_sequence)
EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_await_optimization)
EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_hashbang)
#ifdef V8_INTL_SUPPORT
EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_intl_bigint)
EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE(harmony_intl_datetime_style)
#endif // V8_INTL_SUPPORT
#undef EMPTY_INITIALIZE_GLOBAL_FOR_FEATURE
void Genesis::InitializeGlobal_harmony_global() {
......@@ -4642,10 +4647,6 @@ void Genesis::InitializeGlobal_harmony_intl_segmenter() {
}
}
void Genesis::InitializeGlobal_harmony_intl_bigint() {
// No new functions.
}
#endif // V8_INTL_SUPPORT
void Genesis::InitializeGlobal_harmony_object_from_entries() {
......
......@@ -204,10 +204,11 @@ DEFINE_IMPLICATION(harmony_private_methods, harmony_private_fields)
V(harmony_weak_refs, "harmony weak references") \
#ifdef V8_INTL_SUPPORT
#define HARMONY_INPROGRESS(V) \
HARMONY_INPROGRESS_BASE(V) \
V(harmony_locale, "Intl.Locale") \
V(harmony_intl_bigint, "BigInt.prototype.toLocaleString")
#define HARMONY_INPROGRESS(V) \
HARMONY_INPROGRESS_BASE(V) \
V(harmony_intl_bigint, "BigInt.prototype.toLocaleString") \
V(harmony_intl_datetime_style, "dateStyle timeStyle for DateTimeFormat") \
V(harmony_locale, "Intl.Locale")
#else
#define HARMONY_INPROGRESS(V) HARMONY_INPROGRESS_BASE(V)
#endif
......
......@@ -11,11 +11,13 @@
V(_, calendar_string, "calendar") \
V(_, cardinal_string, "cardinal") \
V(_, caseFirst_string, "caseFirst") \
V(_, dateStyle_string, "dateStyle") \
V(_, day_string, "day") \
V(_, dayPeriod_string, "dayPeriod") \
V(_, decimal_string, "decimal") \
V(_, era_string, "era") \
V(_, fraction_string, "fraction") \
V(_, full_string, "full") \
V(_, granularity_string, "granularity") \
V(_, grapheme_string, "grapheme") \
V(_, group_string, "group") \
......@@ -65,6 +67,7 @@
V(_, strict_string, "strict") \
V(_, style_string, "style") \
V(_, term_string, "term") \
V(_, timeStyle_string, "timeStyle") \
V(_, timeZone_string, "timeZone") \
V(_, timeZoneName_string, "timeZoneName") \
V(_, type_string, "type") \
......@@ -189,6 +192,7 @@
V(_, long_string, "long") \
V(_, Map_string, "Map") \
V(_, MapIterator_string, "Map Iterator") \
V(_, medium_string, "medium") \
V(_, message_string, "message") \
V(_, meta_string, "meta") \
V(_, minus_Infinity_string, "-Infinity") \
......
......@@ -36,6 +36,28 @@ inline Intl::HourCycle JSDateTimeFormat::hour_cycle() const {
return HourCycleBits::decode(flags());
}
inline void JSDateTimeFormat::set_date_style(
JSDateTimeFormat::DateTimeStyle date_style) {
int hints = flags();
hints = DateStyleBits::update(hints, date_style);
set_flags(hints);
}
inline JSDateTimeFormat::DateTimeStyle JSDateTimeFormat::date_style() const {
return DateStyleBits::decode(flags());
}
inline void JSDateTimeFormat::set_time_style(
JSDateTimeFormat::DateTimeStyle time_style) {
int hints = flags();
hints = TimeStyleBits::update(hints, time_style);
set_flags(hints);
}
inline JSDateTimeFormat::DateTimeStyle JSDateTimeFormat::time_style() const {
return TimeStyleBits::decode(flags());
}
CAST_ACCESSOR(JSDateTimeFormat);
} // namespace internal
......
This diff is collapsed.
......@@ -76,6 +76,9 @@ class JSDateTimeFormat : public JSObject {
Handle<String> HourCycleAsString() const;
DECL_CAST(JSDateTimeFormat)
// ecma-402/#sec-properties-of-intl-datetimeformat-instances
enum class DateTimeStyle { kUndefined, kFull, kLong, kMedium, kShort };
// Layout description.
#define JS_DATE_TIME_FORMAT_FIELDS(V) \
V(kICULocaleOffset, kTaggedSize) \
......@@ -92,8 +95,17 @@ class JSDateTimeFormat : public JSObject {
inline void set_hour_cycle(Intl::HourCycle hour_cycle);
inline Intl::HourCycle hour_cycle() const;
inline void set_date_style(DateTimeStyle date_style);
inline DateTimeStyle date_style() const;
inline void set_time_style(DateTimeStyle time_style);
inline DateTimeStyle time_style() const;
// Bit positions in |flags|.
#define FLAGS_BIT_FIELDS(V, _) V(HourCycleBits, Intl::HourCycle, 3, _)
#define FLAGS_BIT_FIELDS(V, _) \
V(HourCycleBits, Intl::HourCycle, 3, _) \
V(DateStyleBits, DateTimeStyle, 3, _) \
V(TimeStyleBits, DateTimeStyle, 3, _)
DEFINE_BIT_FIELDS(FLAGS_BIT_FIELDS)
#undef FLAGS_BIT_FIELDS
......@@ -104,6 +116,18 @@ class JSDateTimeFormat : public JSObject {
STATIC_ASSERT(Intl::HourCycle::kH23 <= HourCycleBits::kMax);
STATIC_ASSERT(Intl::HourCycle::kH24 <= HourCycleBits::kMax);
STATIC_ASSERT(DateTimeStyle::kUndefined <= DateStyleBits::kMax);
STATIC_ASSERT(DateTimeStyle::kFull <= DateStyleBits::kMax);
STATIC_ASSERT(DateTimeStyle::kLong <= DateStyleBits::kMax);
STATIC_ASSERT(DateTimeStyle::kMedium <= DateStyleBits::kMax);
STATIC_ASSERT(DateTimeStyle::kShort <= DateStyleBits::kMax);
STATIC_ASSERT(DateTimeStyle::kUndefined <= TimeStyleBits::kMax);
STATIC_ASSERT(DateTimeStyle::kFull <= TimeStyleBits::kMax);
STATIC_ASSERT(DateTimeStyle::kLong <= TimeStyleBits::kMax);
STATIC_ASSERT(DateTimeStyle::kMedium <= TimeStyleBits::kMax);
STATIC_ASSERT(DateTimeStyle::kShort <= TimeStyleBits::kMax);
DECL_ACCESSORS(icu_locale, Managed<icu::Locale>)
DECL_ACCESSORS(icu_simple_date_format, Managed<icu::SimpleDateFormat>)
DECL_ACCESSORS(bound_format, Object)
......
// Copyright 2019 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-intl-datetime-style
// Throws only once during construction.
// Check for all getters to prevent regression.
// Preserve the order of getter initialization.
let getCount = 0;
let weekday = new Array();
let year = new Array();
let month = new Array();
let day = new Array();
let hour = new Array();
let minute = new Array();
let second = new Array();
let localeMatcher = new Array();
let hour12 = new Array();
let hourCycle = new Array();
let dateStyle = new Array();
let timeStyle = new Array();
let timeZone = new Array();
let era = new Array();
let timeZoneName = new Array();
let formatMatcher = new Array();
new Intl.DateTimeFormat(['en-US'], {
get weekday() {
weekday.push(++getCount);
},
get year() {
year.push(++getCount);
},
get month() {
month.push(++getCount);
},
get day() {
day.push(++getCount);
},
get hour() {
hour.push(++getCount);
},
get minute() {
minute.push(++getCount);
},
get second() {
second.push(++getCount);
},
get localeMatcher() {
localeMatcher.push(++getCount);
},
get hour12() {
hour12.push(++getCount);
},
get hourCycle() {
hourCycle.push(++getCount);
},
get timeZone() {
timeZone.push(++getCount);
},
get dateStyle() {
dateStyle.push(++getCount);
return "full";
},
get timeStyle() {
timeStyle.push(++getCount);
},
get era() {
era.push(++getCount);
},
get timeZoneName() {
timeZoneName.push(++getCount);
},
get formatMatcher() {
formatMatcher.push(++getCount);
}
});
assertEquals(1, weekday.length);
assertEquals(1, weekday[0]);
assertEquals(1, year.length);
assertEquals(2, year[0]);
assertEquals(1, month.length);
assertEquals(3, month[0]);
assertEquals(1, day.length);
assertEquals(4, day[0]);
assertEquals(1, hour.length);
assertEquals(5, hour[0]);
assertEquals(1, minute.length);
assertEquals(6, minute[0]);
assertEquals(1, second.length);
assertEquals(7, second[0]);
assertEquals(1, localeMatcher.length);
assertEquals(8, localeMatcher[0]);
assertEquals(1, hour12.length);
assertEquals(9, hour12[0]);
assertEquals(1, hourCycle.length);
assertEquals(10, hourCycle[0]);
assertEquals(1, timeZone.length);
assertEquals(11, timeZone[0]);
assertEquals(1, dateStyle.length);
assertEquals(12, dateStyle[0]);
assertEquals(1, timeStyle.length);
assertEquals(13, timeStyle[0]);
assertEquals(0, era.length);
assertEquals(0, timeZoneName.length);
assertEquals(0, formatMatcher.length);
// Copyright 2019 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-intl-datetime-style
// Throws only once during construction.
// Check for all getters to prevent regression.
// Preserve the order of getter initialization.
let getCount = 0;
let weekday = new Array();
let year = new Array();
let month = new Array();
let day = new Array();
let hour = new Array();
let minute = new Array();
let second = new Array();
let localeMatcher = new Array();
let hour12 = new Array();
let hourCycle = new Array();
let dateStyle = new Array();
let timeStyle = new Array();
let timeZone = new Array();
let era = new Array();
let timeZoneName = new Array();
let formatMatcher = new Array();
new Intl.DateTimeFormat(['en-US'], {
get weekday() {
weekday.push(++getCount);
},
get year() {
year.push(++getCount);
},
get month() {
month.push(++getCount);
},
get day() {
day.push(++getCount);
},
get hour() {
hour.push(++getCount);
},
get minute() {
minute.push(++getCount);
},
get second() {
second.push(++getCount);
},
get localeMatcher() {
localeMatcher.push(++getCount);
},
get hour12() {
hour12.push(++getCount);
},
get hourCycle() {
hourCycle.push(++getCount);
},
get timeZone() {
timeZone.push(++getCount);
},
get dateStyle() {
dateStyle.push(++getCount);
return "full";
},
get timeStyle() {
timeStyle.push(++getCount);
return "full";
},
get era() {
era.push(++getCount);
},
get timeZoneName() {
timeZoneName.push(++getCount);
},
get formatMatcher() {
formatMatcher.push(++getCount);
}
});
assertEquals(1, weekday.length);
assertEquals(1, weekday[0]);
assertEquals(1, year.length);
assertEquals(2, year[0]);
assertEquals(1, month.length);
assertEquals(3, month[0]);
assertEquals(1, day.length);
assertEquals(4, day[0]);
assertEquals(1, hour.length);
assertEquals(5, hour[0]);
assertEquals(1, minute.length);
assertEquals(6, minute[0]);
assertEquals(1, second.length);
assertEquals(7, second[0]);
assertEquals(1, localeMatcher.length);
assertEquals(8, localeMatcher[0]);
assertEquals(1, hour12.length);
assertEquals(9, hour12[0]);
assertEquals(1, hourCycle.length);
assertEquals(10, hourCycle[0]);
assertEquals(1, timeZone.length);
assertEquals(11, timeZone[0]);
assertEquals(1, dateStyle.length);
assertEquals(12, dateStyle[0]);
assertEquals(1, timeStyle.length);
assertEquals(13, timeStyle[0]);
assertEquals(0, era.length);
assertEquals(0, timeZoneName.length);
assertEquals(0, formatMatcher.length);
// Copyright 2019 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-intl-datetime-style
var validStyle = ["full", "long", "medium", "short", undefined];
var invalidStyle = ["narrow", "numeric"];
validStyle.forEach(function(dateStyle) {
validStyle.forEach(function(timeStyle) {
assertDoesNotThrow(() =>
new Intl.DateTimeFormat("en", {dateStyle, timeStyle}));
});
invalidStyle.forEach(function(timeStyle) {
assertThrows(() =>
new Intl.DateTimeFormat("en", {dateStyle, timeStyle}), RangeError);
});
}
);
invalidStyle.forEach(function(dateStyle) {
validStyle.forEach(function(timeStyle) {
assertThrows(() =>
new Intl.DateTimeFormat("en", {dateStyle, timeStyle}), RangeError);
});
invalidStyle.forEach(function(timeStyle) {
assertThrows(() =>
new Intl.DateTimeFormat("en", {dateStyle, timeStyle}), RangeError);
});
}
);
// Copyright 2019 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-intl-datetime-style
// Throws only once during construction.
// Check for all getters to prevent regression.
// Preserve the order of getter initialization.
let getCount = 0;
let weekday = new Array();
let year = new Array();
let month = new Array();
let day = new Array();
let hour = new Array();
let minute = new Array();
let second = new Array();
let localeMatcher = new Array();
let hour12 = new Array();
let hourCycle = new Array();
let dateStyle = new Array();
let timeStyle = new Array();
let timeZone = new Array();
let era = new Array();
let timeZoneName = new Array();
let formatMatcher = new Array();
new Intl.DateTimeFormat(['en-US'], {
get weekday() {
weekday.push(++getCount);
},
get year() {
year.push(++getCount);
},
get month() {
month.push(++getCount);
},
get day() {
day.push(++getCount);
},
get hour() {
hour.push(++getCount);
},
get minute() {
minute.push(++getCount);
},
get second() {
second.push(++getCount);
},
get localeMatcher() {
localeMatcher.push(++getCount);
},
get hour12() {
hour12.push(++getCount);
},
get hourCycle() {
hourCycle.push(++getCount);
},
get timeZone() {
timeZone.push(++getCount);
},
get dateStyle() {
dateStyle.push(++getCount);
},
get timeStyle() {
timeStyle.push(++getCount);
},
get era() {
era.push(++getCount);
},
get timeZoneName() {
timeZoneName.push(++getCount);
},
get formatMatcher() {
formatMatcher.push(++getCount);
}
});
assertEquals(2, weekday.length);
assertEquals(1, weekday[0]);
assertEquals(1, year.length);
assertEquals(2, year[0]);
assertEquals(1, month.length);
assertEquals(3, month[0]);
assertEquals(1, day.length);
assertEquals(4, day[0]);
assertEquals(2, hour.length);
assertEquals(5, hour[0]);
assertEquals(2, minute.length);
assertEquals(6, minute[0]);
assertEquals(2, second.length);
assertEquals(7, second[0]);
assertEquals(1, localeMatcher.length);
assertEquals(8, localeMatcher[0]);
assertEquals(1, hour12.length);
assertEquals(9, hour12[0]);
assertEquals(1, hourCycle.length);
assertEquals(10, hourCycle[0]);
assertEquals(1, timeZone.length);
assertEquals(11, timeZone[0]);
assertEquals(1, dateStyle.length);
assertEquals(12, dateStyle[0]);
assertEquals(1, timeStyle.length);
assertEquals(13, timeStyle[0]);
assertEquals(14, weekday[1]);
assertEquals(1, era.length);
assertEquals(15, era[0]);
assertEquals(16, hour[1]);
assertEquals(17, minute[1]);
assertEquals(18, second[1]);
assertEquals(1, timeZoneName.length);
assertEquals(19, timeZoneName[0]);
assertEquals(1, formatMatcher.length);
assertEquals(20, formatMatcher[0]);
// Copyright 2019 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-intl-datetime-style
// Throws only once during construction.
// Check for all getters to prevent regression.
// Preserve the order of getter initialization.
let getCount = 0;
let weekday = new Array();
let year = new Array();
let month = new Array();
let day = new Array();
let hour = new Array();
let minute = new Array();
let second = new Array();
let localeMatcher = new Array();
let hour12 = new Array();
let hourCycle = new Array();
let dateStyle = new Array();
let timeStyle = new Array();
let timeZone = new Array();
let era = new Array();
let timeZoneName = new Array();
let formatMatcher = new Array();
new Intl.DateTimeFormat(['en-US'], {
get weekday() {
weekday.push(++getCount);
},
get year() {
year.push(++getCount);
},
get month() {
month.push(++getCount);
},
get day() {
day.push(++getCount);
},
get hour() {
hour.push(++getCount);
},
get minute() {
minute.push(++getCount);
},
get second() {
second.push(++getCount);
},
get localeMatcher() {
localeMatcher.push(++getCount);
},
get hour12() {
hour12.push(++getCount);
},
get hourCycle() {
hourCycle.push(++getCount);
},
get timeZone() {
timeZone.push(++getCount);
},
get dateStyle() {
dateStyle.push(++getCount);
},
get timeStyle() {
timeStyle.push(++getCount);
return "full";
},
get era() {
era.push(++getCount);
},
get timeZoneName() {
timeZoneName.push(++getCount);
},
get formatMatcher() {
formatMatcher.push(++getCount);
}
});
assertEquals(1, weekday.length);
assertEquals(1, weekday[0]);
assertEquals(1, year.length);
assertEquals(2, year[0]);
assertEquals(1, month.length);
assertEquals(3, month[0]);
assertEquals(1, day.length);
assertEquals(4, day[0]);
assertEquals(1, hour.length);
assertEquals(5, hour[0]);
assertEquals(1, minute.length);
assertEquals(6, minute[0]);
assertEquals(1, second.length);
assertEquals(7, second[0]);
assertEquals(1, localeMatcher.length);
assertEquals(8, localeMatcher[0]);
assertEquals(1, hour12.length);
assertEquals(9, hour12[0]);
assertEquals(1, hourCycle.length);
assertEquals(10, hourCycle[0]);
assertEquals(1, timeZone.length);
assertEquals(11, timeZone[0]);
assertEquals(1, dateStyle.length);
assertEquals(12, dateStyle[0]);
assertEquals(1, timeStyle.length);
assertEquals(13, timeStyle[0]);
assertEquals(0, era.length);
assertEquals(0, timeZoneName.length);
assertEquals(0, formatMatcher.length);
// Copyright 2019 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-intl-datetime-style
// Checks for security holes introduced by Object.property overrides.
// For example:
// Object.defineProperty(Array.prototype, 'locale', {
// set: function(value) {
// throw new Error('blah');
// },
// configurable: true,
// enumerable: false
// });
//
// would throw in case of (JS) x.locale = 'us' or (C++) x->Set('locale', 'us').
//
// First get supported properties.
// Some of the properties are optional, so we request them.
var properties = [];
var options = Intl.DateTimeFormat(
'en-US', {dateStyle: 'full'}).resolvedOptions();
for (var prop in options) {
if (options.hasOwnProperty(prop)) {
properties.push(prop);
}
}
// In the order of Table 6 of
// ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions
var expectedProperties = [
'locale',
'calendar',
'numberingSystem',
'timeZone',
'hourCycle',
'hour12',
'weekday',
'year',
'month',
'day',
'dateStyle',
];
assertEquals(expectedProperties.length, properties.length);
properties.forEach(function(prop) {
assertFalse(expectedProperties.indexOf(prop) === -1);
});
taintProperties(properties);
var locale = Intl.DateTimeFormat().resolvedOptions().locale;
// Copyright 2019 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-intl-datetime-style
// Checks for security holes introduced by Object.property overrides.
// For example:
// Object.defineProperty(Array.prototype, 'locale', {
// set: function(value) {
// throw new Error('blah');
// },
// configurable: true,
// enumerable: false
// });
//
// would throw in case of (JS) x.locale = 'us' or (C++) x->Set('locale', 'us').
// First get supported properties.
// Some of the properties are optional, so we request them.
var properties = [];
var options = Intl.DateTimeFormat(
'en-US', {dateStyle: 'full', timeStyle: 'full'}).resolvedOptions();
for (var prop in options) {
if (options.hasOwnProperty(prop)) {
properties.push(prop);
}
}
// In the order of Table 6 of
// ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions
var expectedProperties = [
'locale',
'calendar',
'numberingSystem',
'timeZone',
'hourCycle',
'hour12',
'weekday',
'year',
'month',
'day',
'hour',
'minute',
'second',
'timeZoneName',
'dateStyle',
'timeStyle',
];
assertEquals(expectedProperties.length, properties.length);
properties.forEach(function(prop) {
assertFalse(expectedProperties.indexOf(prop) === -1);
});
taintProperties(properties);
var locale = Intl.DateTimeFormat().resolvedOptions().locale;
// Copyright 2019 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-intl-datetime-style
// Checks for security holes introduced by Object.property overrides.
// For example:
// Object.defineProperty(Array.prototype, 'locale', {
// set: function(value) {
// throw new Error('blah');
// },
// configurable: true,
// enumerable: false
// });
//
// would throw in case of (JS) x.locale = 'us' or (C++) x->Set('locale', 'us').
// First get supported properties.
// Some of the properties are optional, so we request them.
var properties = [];
var options = Intl.DateTimeFormat(
'en-US', {timeStyle: 'full'}).resolvedOptions();
for (var prop in options) {
if (options.hasOwnProperty(prop)) {
properties.push(prop);
}
}
// In the order of Table 6 of
// ecma402 #sec-intl.datetimeformat.prototype.resolvedoptions
var expectedProperties = [
'locale',
'calendar',
'numberingSystem',
'timeZone',
'hourCycle',
'hour12',
'hour',
'minute',
'second',
'timeZoneName',
'timeStyle',
];
assertEquals(expectedProperties.length, properties.length);
properties.forEach(function(prop) {
assertFalse(expectedProperties.indexOf(prop) === -1);
});
taintProperties(properties);
var locale = Intl.DateTimeFormat().resolvedOptions().locale;
......@@ -308,44 +308,44 @@ KNOWN_MAPS = {
("RO_SPACE", 0x02821): (173, "Tuple2Map"),
("RO_SPACE", 0x028c1): (175, "ArrayBoilerplateDescriptionMap"),
("RO_SPACE", 0x02c01): (163, "InterceptorInfoMap"),
("RO_SPACE", 0x05099): (153, "AccessCheckInfoMap"),
("RO_SPACE", 0x050e9): (154, "AccessorInfoMap"),
("RO_SPACE", 0x05139): (155, "AccessorPairMap"),
("RO_SPACE", 0x05189): (156, "AliasedArgumentsEntryMap"),
("RO_SPACE", 0x051d9): (157, "AllocationMementoMap"),
("RO_SPACE", 0x05229): (158, "AsmWasmDataMap"),
("RO_SPACE", 0x05279): (159, "AsyncGeneratorRequestMap"),
("RO_SPACE", 0x052c9): (160, "DebugInfoMap"),
("RO_SPACE", 0x05319): (161, "FunctionTemplateInfoMap"),
("RO_SPACE", 0x05369): (162, "FunctionTemplateRareDataMap"),
("RO_SPACE", 0x053b9): (164, "InterpreterDataMap"),
("RO_SPACE", 0x05409): (165, "ModuleInfoEntryMap"),
("RO_SPACE", 0x05459): (166, "ModuleMap"),
("RO_SPACE", 0x054a9): (167, "ObjectTemplateInfoMap"),
("RO_SPACE", 0x054f9): (168, "PromiseCapabilityMap"),
("RO_SPACE", 0x05549): (169, "PromiseReactionMap"),
("RO_SPACE", 0x05599): (170, "PrototypeInfoMap"),
("RO_SPACE", 0x055e9): (171, "ScriptMap"),
("RO_SPACE", 0x05639): (172, "StackFrameInfoMap"),
("RO_SPACE", 0x05689): (174, "Tuple3Map"),
("RO_SPACE", 0x056d9): (176, "WasmDebugInfoMap"),
("RO_SPACE", 0x05729): (177, "WasmExceptionTagMap"),
("RO_SPACE", 0x05779): (178, "WasmExportedFunctionDataMap"),
("RO_SPACE", 0x057c9): (179, "CallableTaskMap"),
("RO_SPACE", 0x05819): (180, "CallbackTaskMap"),
("RO_SPACE", 0x05869): (181, "PromiseFulfillReactionJobTaskMap"),
("RO_SPACE", 0x058b9): (182, "PromiseRejectReactionJobTaskMap"),
("RO_SPACE", 0x05909): (183, "PromiseResolveThenableJobTaskMap"),
("RO_SPACE", 0x05959): (184, "FinalizationGroupCleanupJobTaskMap"),
("RO_SPACE", 0x059a9): (185, "AllocationSiteWithWeakNextMap"),
("RO_SPACE", 0x059f9): (185, "AllocationSiteWithoutWeakNextMap"),
("RO_SPACE", 0x05a49): (219, "LoadHandler1Map"),
("RO_SPACE", 0x05a99): (219, "LoadHandler2Map"),
("RO_SPACE", 0x05ae9): (219, "LoadHandler3Map"),
("RO_SPACE", 0x05b39): (227, "StoreHandler0Map"),
("RO_SPACE", 0x05b89): (227, "StoreHandler1Map"),
("RO_SPACE", 0x05bd9): (227, "StoreHandler2Map"),
("RO_SPACE", 0x05c29): (227, "StoreHandler3Map"),
("RO_SPACE", 0x05109): (153, "AccessCheckInfoMap"),
("RO_SPACE", 0x05159): (154, "AccessorInfoMap"),
("RO_SPACE", 0x051a9): (155, "AccessorPairMap"),
("RO_SPACE", 0x051f9): (156, "AliasedArgumentsEntryMap"),
("RO_SPACE", 0x05249): (157, "AllocationMementoMap"),
("RO_SPACE", 0x05299): (158, "AsmWasmDataMap"),
("RO_SPACE", 0x052e9): (159, "AsyncGeneratorRequestMap"),
("RO_SPACE", 0x05339): (160, "DebugInfoMap"),
("RO_SPACE", 0x05389): (161, "FunctionTemplateInfoMap"),
("RO_SPACE", 0x053d9): (162, "FunctionTemplateRareDataMap"),
("RO_SPACE", 0x05429): (164, "InterpreterDataMap"),
("RO_SPACE", 0x05479): (165, "ModuleInfoEntryMap"),
("RO_SPACE", 0x054c9): (166, "ModuleMap"),
("RO_SPACE", 0x05519): (167, "ObjectTemplateInfoMap"),
("RO_SPACE", 0x05569): (168, "PromiseCapabilityMap"),
("RO_SPACE", 0x055b9): (169, "PromiseReactionMap"),
("RO_SPACE", 0x05609): (170, "PrototypeInfoMap"),
("RO_SPACE", 0x05659): (171, "ScriptMap"),
("RO_SPACE", 0x056a9): (172, "StackFrameInfoMap"),
("RO_SPACE", 0x056f9): (174, "Tuple3Map"),
("RO_SPACE", 0x05749): (176, "WasmDebugInfoMap"),
("RO_SPACE", 0x05799): (177, "WasmExceptionTagMap"),
("RO_SPACE", 0x057e9): (178, "WasmExportedFunctionDataMap"),
("RO_SPACE", 0x05839): (179, "CallableTaskMap"),
("RO_SPACE", 0x05889): (180, "CallbackTaskMap"),
("RO_SPACE", 0x058d9): (181, "PromiseFulfillReactionJobTaskMap"),
("RO_SPACE", 0x05929): (182, "PromiseRejectReactionJobTaskMap"),
("RO_SPACE", 0x05979): (183, "PromiseResolveThenableJobTaskMap"),
("RO_SPACE", 0x059c9): (184, "FinalizationGroupCleanupJobTaskMap"),
("RO_SPACE", 0x05a19): (185, "AllocationSiteWithWeakNextMap"),
("RO_SPACE", 0x05a69): (185, "AllocationSiteWithoutWeakNextMap"),
("RO_SPACE", 0x05ab9): (219, "LoadHandler1Map"),
("RO_SPACE", 0x05b09): (219, "LoadHandler2Map"),
("RO_SPACE", 0x05b59): (219, "LoadHandler3Map"),
("RO_SPACE", 0x05ba9): (227, "StoreHandler0Map"),
("RO_SPACE", 0x05bf9): (227, "StoreHandler1Map"),
("RO_SPACE", 0x05c49): (227, "StoreHandler2Map"),
("RO_SPACE", 0x05c99): (227, "StoreHandler3Map"),
("MAP_SPACE", 0x00139): (1057, "ExternalMap"),
("MAP_SPACE", 0x00189): (1073, "JSMessageObjectMap"),
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment