[Intl] Add CountUsage for intl objects/functions
Chrome side changes in https://chromium-review.googlesource.com/c/chromium/src/+/1255629 Bug: v8:8250 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: Icba3e73217919c71925774d0cfbab69a7ffa1bba Reviewed-on: https://chromium-review.googlesource.com/c/1255628 Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Frank Tang <ftang@chromium.org> Cr-Commit-Position: refs/heads/master@{#56358}
This commit is contained in:
parent
77f917bafb
commit
6029498ea8
15
include/v8.h
15
include/v8.h
@ -7366,6 +7366,21 @@ class V8_EXPORT Isolate {
|
|||||||
kWasmThreadOpcodes = 51,
|
kWasmThreadOpcodes = 51,
|
||||||
kAtomicsNotify = 52,
|
kAtomicsNotify = 52,
|
||||||
kAtomicsWake = 53,
|
kAtomicsWake = 53,
|
||||||
|
kCollator = 54,
|
||||||
|
kNumberFormat = 55,
|
||||||
|
kDateTimeFormat = 56,
|
||||||
|
kPluralRules = 57,
|
||||||
|
kRelativeTimeFormat = 58,
|
||||||
|
kLocale = 59,
|
||||||
|
kListFormat = 60,
|
||||||
|
kSegmenter = 61,
|
||||||
|
kStringLocaleCompare = 62,
|
||||||
|
kStringToLocaleUpperCase = 63,
|
||||||
|
kStringToLocaleLowerCase = 64,
|
||||||
|
kNumberToLocaleString = 65,
|
||||||
|
kDateToLocaleString = 66,
|
||||||
|
kDateToLocaleDateString = 67,
|
||||||
|
kDateToLocaleTimeString = 68,
|
||||||
|
|
||||||
// If you add new values here, you'll also need to update Chromium's:
|
// If you add new values here, you'll also need to update Chromium's:
|
||||||
// web_feature.mojom, UseCounterCallback.cpp, and enums.xml. V8 changes to
|
// web_feature.mojom, UseCounterCallback.cpp, and enums.xml. V8 changes to
|
||||||
|
@ -843,7 +843,11 @@ BUILTIN(DatePrototypeToTimeString) {
|
|||||||
// ecma402 #sup-date.prototype.tolocaledatestring
|
// ecma402 #sup-date.prototype.tolocaledatestring
|
||||||
BUILTIN(DatePrototypeToLocaleDateString) {
|
BUILTIN(DatePrototypeToLocaleDateString) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kDateToLocaleDateString);
|
||||||
|
|
||||||
CHECK_RECEIVER(JSDate, date, "Date.prototype.toLocaleDateString");
|
CHECK_RECEIVER(JSDate, date, "Date.prototype.toLocaleDateString");
|
||||||
|
|
||||||
RETURN_RESULT_OR_FAILURE(
|
RETURN_RESULT_OR_FAILURE(
|
||||||
isolate, JSDateTimeFormat::ToLocaleDateTime(
|
isolate, JSDateTimeFormat::ToLocaleDateTime(
|
||||||
isolate,
|
isolate,
|
||||||
@ -858,7 +862,11 @@ BUILTIN(DatePrototypeToLocaleDateString) {
|
|||||||
// ecma402 #sup-date.prototype.tolocalestring
|
// ecma402 #sup-date.prototype.tolocalestring
|
||||||
BUILTIN(DatePrototypeToLocaleString) {
|
BUILTIN(DatePrototypeToLocaleString) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kDateToLocaleString);
|
||||||
|
|
||||||
CHECK_RECEIVER(JSDate, date, "Date.prototype.toLocaleString");
|
CHECK_RECEIVER(JSDate, date, "Date.prototype.toLocaleString");
|
||||||
|
|
||||||
RETURN_RESULT_OR_FAILURE(
|
RETURN_RESULT_OR_FAILURE(
|
||||||
isolate, JSDateTimeFormat::ToLocaleDateTime(
|
isolate, JSDateTimeFormat::ToLocaleDateTime(
|
||||||
isolate,
|
isolate,
|
||||||
@ -873,7 +881,11 @@ BUILTIN(DatePrototypeToLocaleString) {
|
|||||||
// ecma402 #sup-date.prototype.tolocaletimestring
|
// ecma402 #sup-date.prototype.tolocaletimestring
|
||||||
BUILTIN(DatePrototypeToLocaleTimeString) {
|
BUILTIN(DatePrototypeToLocaleTimeString) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kDateToLocaleTimeString);
|
||||||
|
|
||||||
CHECK_RECEIVER(JSDate, date, "Date.prototype.toLocaleTimeString");
|
CHECK_RECEIVER(JSDate, date, "Date.prototype.toLocaleTimeString");
|
||||||
|
|
||||||
RETURN_RESULT_OR_FAILURE(
|
RETURN_RESULT_OR_FAILURE(
|
||||||
isolate, JSDateTimeFormat::ToLocaleDateTime(
|
isolate, JSDateTimeFormat::ToLocaleDateTime(
|
||||||
isolate,
|
isolate,
|
||||||
|
@ -349,6 +349,9 @@ Object* FormatConstructor(BuiltinArguments args, Isolate* isolate,
|
|||||||
|
|
||||||
BUILTIN(NumberFormatConstructor) {
|
BUILTIN(NumberFormatConstructor) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kNumberFormat);
|
||||||
|
|
||||||
return FormatConstructor<JSNumberFormat>(
|
return FormatConstructor<JSNumberFormat>(
|
||||||
args, isolate, isolate->intl_number_format_function(),
|
args, isolate, isolate->intl_number_format_function(),
|
||||||
"Intl.NumberFormat");
|
"Intl.NumberFormat");
|
||||||
@ -438,6 +441,9 @@ BUILTIN(NumberFormatInternalFormatNumber) {
|
|||||||
|
|
||||||
BUILTIN(DateTimeFormatConstructor) {
|
BUILTIN(DateTimeFormatConstructor) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kDateTimeFormat);
|
||||||
|
|
||||||
return FormatConstructor<JSDateTimeFormat>(
|
return FormatConstructor<JSDateTimeFormat>(
|
||||||
args, isolate, isolate->intl_date_time_format_function(),
|
args, isolate, isolate->intl_date_time_format_function(),
|
||||||
"Intl.DateTimeFormat");
|
"Intl.DateTimeFormat");
|
||||||
@ -496,6 +502,9 @@ BUILTIN(DateTimeFormatInternalFormat) {
|
|||||||
|
|
||||||
BUILTIN(ListFormatConstructor) {
|
BUILTIN(ListFormatConstructor) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kListFormat);
|
||||||
|
|
||||||
// 1. If NewTarget is undefined, throw a TypeError exception.
|
// 1. If NewTarget is undefined, throw a TypeError exception.
|
||||||
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
|
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
|
||||||
THROW_NEW_ERROR_RETURN_FAILURE(
|
THROW_NEW_ERROR_RETURN_FAILURE(
|
||||||
@ -582,6 +591,9 @@ MaybeHandle<JSLocale> CreateLocale(Isolate* isolate,
|
|||||||
// Intl.Locale implementation
|
// Intl.Locale implementation
|
||||||
BUILTIN(LocaleConstructor) {
|
BUILTIN(LocaleConstructor) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kLocale);
|
||||||
|
|
||||||
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
|
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
|
||||||
THROW_NEW_ERROR_RETURN_FAILURE(
|
THROW_NEW_ERROR_RETURN_FAILURE(
|
||||||
isolate, NewTypeError(MessageTemplate::kConstructorNotFunction,
|
isolate, NewTypeError(MessageTemplate::kConstructorNotFunction,
|
||||||
@ -742,6 +754,9 @@ BUILTIN(LocalePrototypeToString) {
|
|||||||
|
|
||||||
BUILTIN(RelativeTimeFormatConstructor) {
|
BUILTIN(RelativeTimeFormatConstructor) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kRelativeTimeFormat);
|
||||||
|
|
||||||
// 1. If NewTarget is undefined, throw a TypeError exception.
|
// 1. If NewTarget is undefined, throw a TypeError exception.
|
||||||
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
|
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
|
||||||
THROW_NEW_ERROR_RETURN_FAILURE(
|
THROW_NEW_ERROR_RETURN_FAILURE(
|
||||||
@ -783,7 +798,11 @@ BUILTIN(RelativeTimeFormatPrototypeResolvedOptions) {
|
|||||||
|
|
||||||
BUILTIN(StringPrototypeToLocaleLowerCase) {
|
BUILTIN(StringPrototypeToLocaleLowerCase) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kStringToLocaleLowerCase);
|
||||||
|
|
||||||
TO_THIS_STRING(string, "String.prototype.toLocaleLowerCase");
|
TO_THIS_STRING(string, "String.prototype.toLocaleLowerCase");
|
||||||
|
|
||||||
RETURN_RESULT_OR_FAILURE(
|
RETURN_RESULT_OR_FAILURE(
|
||||||
isolate, Intl::StringLocaleConvertCase(isolate, string, false,
|
isolate, Intl::StringLocaleConvertCase(isolate, string, false,
|
||||||
args.atOrUndefined(isolate, 1)));
|
args.atOrUndefined(isolate, 1)));
|
||||||
@ -791,7 +810,11 @@ BUILTIN(StringPrototypeToLocaleLowerCase) {
|
|||||||
|
|
||||||
BUILTIN(StringPrototypeToLocaleUpperCase) {
|
BUILTIN(StringPrototypeToLocaleUpperCase) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kStringToLocaleUpperCase);
|
||||||
|
|
||||||
TO_THIS_STRING(string, "String.prototype.toLocaleUpperCase");
|
TO_THIS_STRING(string, "String.prototype.toLocaleUpperCase");
|
||||||
|
|
||||||
RETURN_RESULT_OR_FAILURE(
|
RETURN_RESULT_OR_FAILURE(
|
||||||
isolate, Intl::StringLocaleConvertCase(isolate, string, true,
|
isolate, Intl::StringLocaleConvertCase(isolate, string, true,
|
||||||
args.atOrUndefined(isolate, 1)));
|
args.atOrUndefined(isolate, 1)));
|
||||||
@ -800,6 +823,8 @@ BUILTIN(StringPrototypeToLocaleUpperCase) {
|
|||||||
BUILTIN(PluralRulesConstructor) {
|
BUILTIN(PluralRulesConstructor) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kPluralRules);
|
||||||
|
|
||||||
// 1. If NewTarget is undefined, throw a TypeError exception.
|
// 1. If NewTarget is undefined, throw a TypeError exception.
|
||||||
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
|
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
|
||||||
THROW_NEW_ERROR_RETURN_FAILURE(
|
THROW_NEW_ERROR_RETURN_FAILURE(
|
||||||
@ -869,6 +894,9 @@ BUILTIN(PluralRulesSupportedLocalesOf) {
|
|||||||
|
|
||||||
BUILTIN(CollatorConstructor) {
|
BUILTIN(CollatorConstructor) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kCollator);
|
||||||
|
|
||||||
Handle<JSReceiver> new_target;
|
Handle<JSReceiver> new_target;
|
||||||
// 1. If NewTarget is undefined, let newTarget be the active
|
// 1. If NewTarget is undefined, let newTarget be the active
|
||||||
// function object, else let newTarget be NewTarget.
|
// function object, else let newTarget be NewTarget.
|
||||||
|
@ -111,6 +111,9 @@ BUILTIN(NumberPrototypeToFixed) {
|
|||||||
// ES6 section 20.1.3.4 Number.prototype.toLocaleString ( [ r1 [ , r2 ] ] )
|
// ES6 section 20.1.3.4 Number.prototype.toLocaleString ( [ r1 [ , r2 ] ] )
|
||||||
BUILTIN(NumberPrototypeToLocaleString) {
|
BUILTIN(NumberPrototypeToLocaleString) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kNumberToLocaleString);
|
||||||
|
|
||||||
Handle<Object> value = args.at(0);
|
Handle<Object> value = args.at(0);
|
||||||
|
|
||||||
// Unwrap the receiver {value}.
|
// Unwrap the receiver {value}.
|
||||||
|
@ -195,6 +195,9 @@ BUILTIN(StringPrototypeLastIndexOf) {
|
|||||||
// do anything locale specific.
|
// do anything locale specific.
|
||||||
BUILTIN(StringPrototypeLocaleCompare) {
|
BUILTIN(StringPrototypeLocaleCompare) {
|
||||||
HandleScope handle_scope(isolate);
|
HandleScope handle_scope(isolate);
|
||||||
|
|
||||||
|
isolate->CountUsage(v8::Isolate::UseCounterFeature::kStringLocaleCompare);
|
||||||
|
|
||||||
#ifdef V8_INTL_SUPPORT
|
#ifdef V8_INTL_SUPPORT
|
||||||
TO_THIS_STRING(str1, "String.prototype.localeCompare");
|
TO_THIS_STRING(str1, "String.prototype.localeCompare");
|
||||||
Handle<String> str2;
|
Handle<String> str2;
|
||||||
|
Loading…
Reference in New Issue
Block a user