Skip to content

Commit 1d82eec

Browse files
FrankYFTangV8 LUCI CQ
authored andcommitted
[intl] Change fatal to exception due to lack of resources
Other Intl object address the same issue in https://issues.chromium.org/issues/42200234 Fixed: 412149700 Change-Id: Ieca48451cd81efc7f9cb52d8cc806bc4c6f01323 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6599691 Commit-Queue: Frank Tang <[email protected]> Reviewed-by: Jakob Kummerow <[email protected]> Cr-Commit-Position: refs/heads/main@{#100658}
1 parent de2a830 commit 1d82eec

11 files changed

Lines changed: 65 additions & 55 deletions

src/objects/js-break-iterator.cc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,12 @@ MaybeDirectHandle<JSV8BreakIterator> JSV8BreakIterator::New(
4343
MAYBE_RETURN(maybe_locale_matcher, MaybeDirectHandle<JSV8BreakIterator>());
4444
Intl::MatcherOption matcher = maybe_locale_matcher.FromJust();
4545

46-
Maybe<Intl::ResolvedLocale> maybe_resolve_locale =
47-
Intl::ResolveLocale(isolate, JSV8BreakIterator::GetAvailableLocales(),
48-
requested_locales, matcher, {});
49-
if (maybe_resolve_locale.IsNothing()) {
46+
Intl::ResolvedLocale r;
47+
if (!Intl::ResolveLocale(isolate, JSV8BreakIterator::GetAvailableLocales(),
48+
requested_locales, matcher, {})
49+
.To(&r)) {
5050
THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError));
5151
}
52-
Intl::ResolvedLocale r = maybe_resolve_locale.FromJust();
5352

5453
// Extract type from options
5554
enum class Type { CHARACTER, WORD, SENTENCE, LINE };

src/objects/js-collator.cc

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -358,18 +358,16 @@ MaybeHandle<JSCollator> JSCollator::New(Isolate* isolate, DirectHandle<Map> map,
358358
// https://tc39.github.io/ecma402/#sec-intl-collator-internal-slots
359359
//
360360
// 16. Let relevantExtensionKeys be %Collator%.[[RelevantExtensionKeys]].
361-
std::set<std::string> relevant_extension_keys{"co", "kn", "kf"};
362361

363362
// 17. Let r be ResolveLocale(%Collator%.[[AvailableLocales]],
364363
// requestedLocales, opt, %Collator%.[[RelevantExtensionKeys]],
365364
// localeData).
366-
Maybe<Intl::ResolvedLocale> maybe_resolve_locale =
367-
Intl::ResolveLocale(isolate, JSCollator::GetAvailableLocales(),
368-
requested_locales, matcher, relevant_extension_keys);
369-
if (maybe_resolve_locale.IsNothing()) {
365+
Intl::ResolvedLocale r;
366+
if (!Intl::ResolveLocale(isolate, JSCollator::GetAvailableLocales(),
367+
requested_locales, matcher, {"co", "kn", "kf"})
368+
.To(&r)) {
370369
THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError));
371370
}
372-
Intl::ResolvedLocale r = maybe_resolve_locale.FromJust();
373371

374372
// 18. Set collator.[[Locale]] to r.[[locale]].
375373
icu::Locale icu_locale = r.icu_locale;

src/objects/js-date-time-format.cc

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2056,20 +2056,19 @@ MaybeDirectHandle<JSDateTimeFormat> JSDateTimeFormat::CreateDateTimeFormat(
20562056
// ecma402/#sec-intl.datetimeformat-internal-slots
20572057
// The value of the [[RelevantExtensionKeys]] internal slot is
20582058
// « "ca", "nu", "hc" ».
2059-
std::set<std::string> relevant_extension_keys = {"nu", "ca", "hc"};
20602059

20612060
// 10. Let localeData be %DateTimeFormat%.[[LocaleData]].
20622061
// 11. Let r be ResolveLocale( %DateTimeFormat%.[[AvailableLocales]],
20632062
// requestedLocales, opt, %DateTimeFormat%.[[RelevantExtensionKeys]],
20642063
// localeData).
20652064
//
2066-
Maybe<Intl::ResolvedLocale> maybe_resolve_locale = Intl::ResolveLocale(
2067-
isolate, JSDateTimeFormat::GetAvailableLocales(), requested_locales,
2068-
locale_matcher, relevant_extension_keys);
2069-
if (maybe_resolve_locale.IsNothing()) {
2065+
Intl::ResolvedLocale r;
2066+
if (!Intl::ResolveLocale(isolate, JSDateTimeFormat::GetAvailableLocales(),
2067+
requested_locales, locale_matcher,
2068+
{"nu", "ca", "hc"})
2069+
.To(&r)) {
20702070
THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError));
20712071
}
2072-
Intl::ResolvedLocale r = maybe_resolve_locale.FromJust();
20732072

20742073
icu::Locale icu_locale = r.icu_locale;
20752074
DCHECK(!icu_locale.isBogus());

src/objects/js-display-names.cc

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -436,16 +436,14 @@ MaybeDirectHandle<JSDisplayNames> JSDisplayNames::New(
436436
// ecma402/#sec-Intl.DisplayNames-internal-slots
437437
// The value of the [[RelevantExtensionKeys]] internal slot is
438438
// « ».
439-
std::set<std::string> relevant_extension_keys = {};
440439
// 9. Let r be ResolveLocale(%DisplayNames%.[[AvailableLocales]],
441440
// requestedLocales, opt, %DisplayNames%.[[RelevantExtensionKeys]]).
442-
Maybe<Intl::ResolvedLocale> maybe_resolve_locale =
443-
Intl::ResolveLocale(isolate, JSDisplayNames::GetAvailableLocales(),
444-
requested_locales, matcher, relevant_extension_keys);
445-
if (maybe_resolve_locale.IsNothing()) {
441+
Intl::ResolvedLocale r;
442+
if (!Intl::ResolveLocale(isolate, JSDisplayNames::GetAvailableLocales(),
443+
requested_locales, matcher, {})
444+
.To(&r)) {
446445
THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError));
447446
}
448-
Intl::ResolvedLocale r = maybe_resolve_locale.FromJust();
449447

450448
icu::Locale icu_locale = r.icu_locale;
451449

src/objects/js-duration-format.cc

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -290,13 +290,12 @@ MaybeDirectHandle<JSDurationFormat> JSDurationFormat::New(
290290
// 9. Let r be ResolveLocale(%DurationFormat%.[[AvailableLocales]],
291291
// requestedLocales, opt, %DurationFormat%.[[RelevantExtensionKeys]],
292292
// %DurationFormat%.[[LocaleData]]).
293-
std::set<std::string> relevant_extension_keys{"nu"};
294293
Intl::ResolvedLocale r;
295-
MAYBE_ASSIGN_RETURN_ON_EXCEPTION_VALUE(
296-
isolate, r,
297-
Intl::ResolveLocale(isolate, JSDurationFormat::GetAvailableLocales(),
298-
requested_locales, matcher, relevant_extension_keys),
299-
DirectHandle<JSDurationFormat>());
294+
if (!Intl::ResolveLocale(isolate, JSDurationFormat::GetAvailableLocales(),
295+
requested_locales, matcher, {"nu"})
296+
.To(&r)) {
297+
THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError));
298+
}
300299

301300
// 10. Let locale be r.[[locale]].
302301
icu::Locale r_locale = r.icu_locale;

src/objects/js-list-format.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,13 @@ MaybeDirectHandle<JSListFormat> JSListFormat::New(
8787

8888
// 10. Let r be ResolveLocale(%ListFormat%.[[AvailableLocales]],
8989
// requestedLocales, opt, undefined, localeData).
90-
Maybe<Intl::ResolvedLocale> maybe_resolve_locale =
91-
Intl::ResolveLocale(isolate, JSListFormat::GetAvailableLocales(),
92-
requested_locales, matcher, {});
93-
if (maybe_resolve_locale.IsNothing()) {
90+
Intl::ResolvedLocale r;
91+
if (!Intl::ResolveLocale(isolate, JSListFormat::GetAvailableLocales(),
92+
requested_locales, matcher, {})
93+
.To(&r)) {
9494
THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError));
9595
}
96-
Intl::ResolvedLocale r = maybe_resolve_locale.FromJust();
96+
9797
DirectHandle<String> locale_str =
9898
isolate->factory()->NewStringFromAsciiChecked(r.locale.c_str());
9999

src/objects/js-number-format.cc

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1108,14 +1108,12 @@ MaybeDirectHandle<JSNumberFormat> JSNumberFormat::New(
11081108
// 10. Let r be ResolveLocale(%NumberFormat%.[[AvailableLocales]],
11091109
// requestedLocales, opt, %NumberFormat%.[[RelevantExtensionKeys]],
11101110
// localeData).
1111-
std::set<std::string> relevant_extension_keys{"nu"};
1112-
Maybe<Intl::ResolvedLocale> maybe_resolve_locale =
1113-
Intl::ResolveLocale(isolate, JSNumberFormat::GetAvailableLocales(),
1114-
requested_locales, matcher, relevant_extension_keys);
1115-
if (maybe_resolve_locale.IsNothing()) {
1111+
Intl::ResolvedLocale r;
1112+
if (!Intl::ResolveLocale(isolate, JSNumberFormat::GetAvailableLocales(),
1113+
requested_locales, matcher, {"nu"})
1114+
.To(&r)) {
11161115
THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError));
11171116
}
1118-
Intl::ResolvedLocale r = maybe_resolve_locale.FromJust();
11191117

11201118
icu::Locale icu_locale = r.icu_locale;
11211119
UErrorCode status = U_ZERO_ERROR;

src/objects/js-plural-rules.cc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,12 @@ MaybeDirectHandle<JSPluralRules> JSPluralRules::New(
107107
// 11. Let r be ResolveLocale(%PluralRules%.[[AvailableLocales]],
108108
// requestedLocales, opt, %PluralRules%.[[RelevantExtensionKeys]],
109109
// localeData).
110-
Maybe<Intl::ResolvedLocale> maybe_resolve_locale =
111-
Intl::ResolveLocale(isolate, JSPluralRules::GetAvailableLocales(),
112-
requested_locales, matcher, {});
113-
if (maybe_resolve_locale.IsNothing()) {
110+
Intl::ResolvedLocale r;
111+
if (!Intl::ResolveLocale(isolate, JSPluralRules::GetAvailableLocales(),
112+
requested_locales, matcher, {})
113+
.To(&r)) {
114114
THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError));
115115
}
116-
Intl::ResolvedLocale r = maybe_resolve_locale.FromJust();
117116
DirectHandle<String> locale_str =
118117
isolate->factory()->NewStringFromAsciiChecked(r.locale.c_str());
119118

src/objects/js-relative-time-format.cc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,12 @@ MaybeDirectHandle<JSRelativeTimeFormat> JSRelativeTimeFormat::New(
110110
// ResolveLocale(%RelativeTimeFormat%.[[AvailableLocales]],
111111
// requestedLocales, opt,
112112
// %RelativeTimeFormat%.[[RelevantExtensionKeys]], localeData).
113-
Maybe<Intl::ResolvedLocale> maybe_resolve_locale =
114-
Intl::ResolveLocale(isolate, JSRelativeTimeFormat::GetAvailableLocales(),
115-
requested_locales, matcher, {"nu"});
116-
if (maybe_resolve_locale.IsNothing()) {
113+
Intl::ResolvedLocale r;
114+
if (!Intl::ResolveLocale(isolate, JSRelativeTimeFormat::GetAvailableLocales(),
115+
requested_locales, matcher, {"nu"})
116+
.To(&r)) {
117117
THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError));
118118
}
119-
Intl::ResolvedLocale r = maybe_resolve_locale.FromJust();
120119

121120
UErrorCode status = U_ZERO_ERROR;
122121

src/objects/js-segmenter.cc

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,12 @@ MaybeDirectHandle<JSSegmenter> JSSegmenter::New(
5353

5454
// 11. Let r be ResolveLocale(%Segmenter%.[[AvailableLocales]],
5555
// requestedLocales, opt, %Segmenter%.[[RelevantExtensionKeys]]).
56-
Maybe<Intl::ResolvedLocale> maybe_resolve_locale =
57-
Intl::ResolveLocale(isolate, JSSegmenter::GetAvailableLocales(),
58-
requested_locales, matcher, {});
59-
if (maybe_resolve_locale.IsNothing()) {
56+
Intl::ResolvedLocale r;
57+
if (!Intl::ResolveLocale(isolate, JSSegmenter::GetAvailableLocales(),
58+
requested_locales, matcher, {})
59+
.To(&r)) {
6060
THROW_NEW_ERROR(isolate, NewRangeError(MessageTemplate::kIcuError));
6161
}
62-
Intl::ResolvedLocale r = maybe_resolve_locale.FromJust();
6362

6463
// 12. Set segmenter.[[Locale]] to the value of r.[[locale]].
6564
DirectHandle<String> locale_str =

0 commit comments

Comments
 (0)