diff options
Diffstat (limited to 'deps/v8/src/objects/js-relative-time-format.cc')
-rw-r--r-- | deps/v8/src/objects/js-relative-time-format.cc | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/deps/v8/src/objects/js-relative-time-format.cc b/deps/v8/src/objects/js-relative-time-format.cc index 59a3bf7ea0..28f8c757ee 100644 --- a/deps/v8/src/objects/js-relative-time-format.cc +++ b/deps/v8/src/objects/js-relative-time-format.cc @@ -34,9 +34,8 @@ UDateRelativeDateTimeFormatterStyle getIcuStyle( return UDAT_STYLE_SHORT; case JSRelativeTimeFormat::Style::NARROW: return UDAT_STYLE_NARROW; - case JSRelativeTimeFormat::Style::COUNT: - UNREACHABLE(); } + UNREACHABLE(); } } // namespace @@ -54,11 +53,9 @@ JSRelativeTimeFormat::Numeric JSRelativeTimeFormat::getNumeric( UNREACHABLE(); } -MaybeHandle<JSRelativeTimeFormat> JSRelativeTimeFormat::Initialize( - Isolate* isolate, Handle<JSRelativeTimeFormat> relative_time_format_holder, - Handle<Object> locales, Handle<Object> input_options) { - relative_time_format_holder->set_flags(0); - +MaybeHandle<JSRelativeTimeFormat> JSRelativeTimeFormat::New( + Isolate* isolate, Handle<Map> map, Handle<Object> locales, + Handle<Object> input_options) { // 1. Let requestedLocales be ? CanonicalizeLocaleList(locales). Maybe<std::vector<std::string>> maybe_requested_locales = Intl::CanonicalizeLocaleList(isolate, locales); @@ -125,7 +122,6 @@ MaybeHandle<JSRelativeTimeFormat> JSRelativeTimeFormat::Initialize( Handle<String> locale_str = isolate->factory()->NewStringFromAsciiChecked( maybe_locale_str.FromJust().c_str()); - relative_time_format_holder->set_locale(*locale_str); // 15. Let s be ? GetOption(options, "style", "string", // «"long", "short", "narrow"», "long"). @@ -136,9 +132,6 @@ MaybeHandle<JSRelativeTimeFormat> JSRelativeTimeFormat::Initialize( MAYBE_RETURN(maybe_style, MaybeHandle<JSRelativeTimeFormat>()); Style style_enum = maybe_style.FromJust(); - // 16. Set relativeTimeFormat.[[Style]] to s. - relative_time_format_holder->set_style(style_enum); - // 17. Let numeric be ? GetOption(options, "numeric", "string", // «"always", "auto"», "always"). Maybe<Numeric> maybe_numeric = Intl::GetStringOption<Numeric>( @@ -147,9 +140,6 @@ MaybeHandle<JSRelativeTimeFormat> JSRelativeTimeFormat::Initialize( MAYBE_RETURN(maybe_numeric, MaybeHandle<JSRelativeTimeFormat>()); Numeric numeric_enum = maybe_numeric.FromJust(); - // 18. Set relativeTimeFormat.[[Numeric]] to numeric. - relative_time_format_holder->set_numeric(numeric_enum); - // 19. Let relativeTimeFormat.[[NumberFormat]] be // ? Construct(%NumberFormat%, « nfLocale, nfOptions »). icu::NumberFormat* number_format = @@ -179,6 +169,21 @@ MaybeHandle<JSRelativeTimeFormat> JSRelativeTimeFormat::Initialize( Managed<icu::RelativeDateTimeFormatter>::FromRawPtr(isolate, 0, icu_formatter); + // Now all properties are ready, so we can allocate the result object. + Handle<JSRelativeTimeFormat> relative_time_format_holder = + Handle<JSRelativeTimeFormat>::cast( + isolate->factory()->NewFastOrSlowJSObjectFromMap(map)); + DisallowHeapAllocation no_gc; + relative_time_format_holder->set_flags(0); + + relative_time_format_holder->set_locale(*locale_str); + + // 16. Set relativeTimeFormat.[[Style]] to s. + relative_time_format_holder->set_style(style_enum); + + // 18. Set relativeTimeFormat.[[Numeric]] to numeric. + relative_time_format_holder->set_numeric(numeric_enum); + // 21. Set relativeTimeFormat.[[InitializedRelativeTimeFormat]] to true. relative_time_format_holder->set_icu_formatter(*managed_formatter); @@ -214,9 +219,8 @@ Handle<String> JSRelativeTimeFormat::StyleAsString() const { return GetReadOnlyRoots().short_string_handle(); case Style::NARROW: return GetReadOnlyRoots().narrow_string_handle(); - case Style::COUNT: - UNREACHABLE(); } + UNREACHABLE(); } Handle<String> JSRelativeTimeFormat::NumericAsString() const { @@ -225,9 +229,8 @@ Handle<String> JSRelativeTimeFormat::NumericAsString() const { return GetReadOnlyRoots().always_string_handle(); case Numeric::AUTO: return GetReadOnlyRoots().auto_string_handle(); - case Numeric::COUNT: - UNREACHABLE(); } + UNREACHABLE(); } namespace { |