summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/builtins-intl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/builtins/builtins-intl.cc')
-rw-r--r--deps/v8/src/builtins/builtins-intl.cc36
1 files changed, 23 insertions, 13 deletions
diff --git a/deps/v8/src/builtins/builtins-intl.cc b/deps/v8/src/builtins/builtins-intl.cc
index ca8237f0df..47054037e5 100644
--- a/deps/v8/src/builtins/builtins-intl.cc
+++ b/deps/v8/src/builtins/builtins-intl.cc
@@ -45,6 +45,7 @@ BUILTIN(StringPrototypeToUpperCaseIntl) {
BUILTIN(StringPrototypeNormalizeIntl) {
HandleScope handle_scope(isolate);
+ isolate->CountUsage(v8::Isolate::UseCounterFeature::kStringNormalize);
TO_THIS_STRING(string, "String.prototype.normalize");
Handle<Object> form_input = args.atOrUndefined(isolate, 1);
@@ -82,14 +83,19 @@ BUILTIN(NumberFormatPrototypeFormatToParts) {
Handle<Object> x;
if (args.length() >= 2) {
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, x,
- Object::ToNumber(isolate, args.at(1)));
+ if (FLAG_harmony_intl_bigint) {
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
+ isolate, x, Object::ToNumeric(isolate, args.at(1)));
+ } else {
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, x,
+ Object::ToNumber(isolate, args.at(1)));
+ }
} else {
x = isolate->factory()->nan_value();
}
- RETURN_RESULT_OR_FAILURE(isolate, JSNumberFormat::FormatToParts(
- isolate, number_format, x->Number()));
+ RETURN_RESULT_OR_FAILURE(
+ isolate, JSNumberFormat::FormatToParts(isolate, number_format, x));
}
BUILTIN(DateTimeFormatPrototypeResolvedOptions) {
@@ -248,7 +254,7 @@ Object LegacyFormatConstructor(BuiltinArguments args, Isolate* isolate,
desc.set_configurable(false);
Maybe<bool> success = JSReceiver::DefineOwnProperty(
isolate, rec, isolate->factory()->intl_fallback_symbol(), &desc,
- kThrowOnError);
+ Just(kThrowOnError));
MAYBE_RETURN(success, ReadOnlyRoots(isolate).exception());
CHECK(success.FromJust());
// b. b. Return this.
@@ -400,19 +406,23 @@ BUILTIN(NumberFormatInternalFormatNumber) {
// 3. If value is not provided, let value be undefined.
Handle<Object> value = args.atOrUndefined(isolate, 1);
- // 4. Let x be ? ToNumber(value).
- Handle<Object> number_obj;
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, number_obj,
- Object::ToNumber(isolate, value));
+ // 4. Let x be ? ToNumeric(value).
+ Handle<Object> numeric_obj;
+ if (FLAG_harmony_intl_bigint) {
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, numeric_obj,
+ Object::ToNumeric(isolate, value));
+ } else {
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, numeric_obj,
+ Object::ToNumber(isolate, value));
+ }
- double number = number_obj->Number();
icu::NumberFormat* icu_number_format =
number_format->icu_number_format()->raw();
CHECK_NOT_NULL(icu_number_format);
- // Return FormatNumber(nf, x).
- RETURN_RESULT_OR_FAILURE(isolate, JSNumberFormat::FormatNumber(
- isolate, *icu_number_format, number));
+ RETURN_RESULT_OR_FAILURE(
+ isolate,
+ JSNumberFormat::FormatNumeric(isolate, *icu_number_format, numeric_obj));
}
BUILTIN(DateTimeFormatConstructor) {