blob: c7aa3859a8ee52c8fa6fc50f1cd623101d432229 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#if JS_HAS_INTL_API
/**
* Format this BigInt object into a string, using the locale and formatting
* options provided.
*
* Spec PR: https://github.com/tc39/ecma402/pull/236
*/
function BigInt_toLocaleString() {
// Step 1. Note that valueOf enforces "thisBigIntValue" restrictions.
var x = callFunction(std_BigInt_valueOf, this);
var locales = ArgumentsLength() ? GetArgument(0) : undefined;
var options = ArgumentsLength() > 1 ? GetArgument(1) : undefined;
// Step 2.
var numberFormat;
if (locales === undefined && options === undefined) {
// This cache only optimizes when no explicit locales and options
// arguments were supplied.
if (!intl_IsRuntimeDefaultLocale(numberFormatCache.runtimeDefaultLocale)) {
numberFormatCache.numberFormat = intl_NumberFormat(locales, options);
numberFormatCache.runtimeDefaultLocale = intl_RuntimeDefaultLocale();
}
numberFormat = numberFormatCache.numberFormat;
} else {
numberFormat = intl_NumberFormat(locales, options);
}
// Step 3.
return intl_FormatNumber(numberFormat, x, /* formatToParts = */ false);
}
#endif // JS_HAS_INTL_API
|