| Index: src/runtime/runtime-i18n.cc
|
| diff --git a/src/runtime/runtime-i18n.cc b/src/runtime/runtime-i18n.cc
|
| index 7b5ea181e1368a44cc7b9c205af1909c3e669fb2..80c8a9cd012a89210dfa54accd5a386bd8739a03 100644
|
| --- a/src/runtime/runtime-i18n.cc
|
| +++ b/src/runtime/runtime-i18n.cc
|
| @@ -532,6 +532,29 @@ RUNTIME_FUNCTION(Runtime_InternalNumberFormat) {
|
| result.length())));
|
| }
|
|
|
| +RUNTIME_FUNCTION(Runtime_CurrencyDigits) {
|
| + DCHECK_EQ(1, args.length());
|
| +
|
| + CONVERT_ARG_HANDLE_CHECKED(String, currency, 0);
|
| +
|
| + // TODO(littledan): Avoid transcoding the string twice
|
| + v8::String::Utf8Value currency_string(v8::Utils::ToLocal(currency));
|
| + icu::UnicodeString currency_icu =
|
| + icu::UnicodeString::fromUTF8(*currency_string);
|
| +
|
| + DisallowHeapAllocation no_gc;
|
| + UErrorCode status = U_ZERO_ERROR;
|
| +#if U_ICU_VERSION_MAJOR_NUM >= 59
|
| + uint32_t fraction_digits = ucurr_getDefaultFractionDigits(
|
| + icu::toUCharPtr(currency_icu.getTerminatedBuffer()), &status);
|
| +#else
|
| + uint32_t fraction_digits = ucurr_getDefaultFractionDigits(
|
| + currency_icu.getTerminatedBuffer(), &status);
|
| +#endif
|
| + // For missing currency codes, default to the most common, 2
|
| + if (!U_SUCCESS(status)) fraction_digits = 2;
|
| + return Smi::FromInt(fraction_digits);
|
| +}
|
|
|
| RUNTIME_FUNCTION(Runtime_CreateCollator) {
|
| HandleScope scope(isolate);
|
|
|