| Index: src/js/i18n.js
|
| diff --git a/src/js/i18n.js b/src/js/i18n.js
|
| index 011b7489af925292d841e00525d93e96600f9366..dc64304a7853ae318f9e4f392b0bf9a8b7f927db 100644
|
| --- a/src/js/i18n.js
|
| +++ b/src/js/i18n.js
|
| @@ -27,7 +27,7 @@ var GlobalRegExp = global.RegExp;
|
| var GlobalString = global.String;
|
| var InstallFunctions = utils.InstallFunctions;
|
| var InstallGetter = utils.InstallGetter;
|
| -var InternalPackedArray = utils.InternalPackedArray;
|
| +var InternalArray = utils.InternalArray;
|
| var InternalRegExpMatch;
|
| var InternalRegExpReplace
|
| var IsFinite;
|
| @@ -305,7 +305,7 @@ function supportedLocalesOf(service, locales, options) {
|
| * Locales appear in the same order in the returned list as in the input list.
|
| */
|
| function lookupSupportedLocalesOf(requestedLocales, availableLocales) {
|
| - var matchedLocales = [];
|
| + var matchedLocales = new InternalArray();
|
| for (var i = 0; i < requestedLocales.length; ++i) {
|
| // Remove -u- extension.
|
| var locale = InternalRegExpReplace(
|
| @@ -565,14 +565,16 @@ function setOptions(inOptions, extensionMap, keyValues, getOption, outOptions) {
|
|
|
|
|
| /**
|
| - * Converts all OwnProperties into
|
| + * Given an array-like, outputs an Array with the numbered
|
| + * properties copied over and defined
|
| * configurable: false, writable: false, enumerable: true.
|
| */
|
| -function freezeArray(array) {
|
| - var l = array.length;
|
| +function freezeArray(input) {
|
| + var array = [];
|
| + var l = input.length;
|
| for (var i = 0; i < l; i++) {
|
| - if (i in array) {
|
| - %object_define_property(array, i, {value: array[i],
|
| + if (i in input) {
|
| + %object_define_property(array, i, {value: input[i],
|
| configurable: false,
|
| writable: false,
|
| enumerable: true});
|
| @@ -749,11 +751,8 @@ function canonicalizeLanguageTag(localeID) {
|
| * Throws on locales that are not well formed BCP47 tags.
|
| */
|
| function initializeLocaleList(locales) {
|
| - var seen = [];
|
| - if (IS_UNDEFINED(locales)) {
|
| - // Constructor is called without arguments.
|
| - seen = [];
|
| - } else {
|
| + var seen = new InternalArray();
|
| + if (!IS_UNDEFINED(locales)) {
|
| // We allow single string localeID.
|
| if (typeof locales === 'string') {
|
| %_Call(ArrayPush, seen, canonicalizeLanguageTag(locales));
|
| @@ -808,8 +807,8 @@ function isValidLanguageTag(locale) {
|
| // Skip language since it can match variant regex, so we start from 1.
|
| // We are matching i-klingon here, but that's ok, since i-klingon-klingon
|
| // is not valid and would fail LANGUAGE_TAG_RE test.
|
| - var variants = [];
|
| - var extensions = [];
|
| + var variants = new InternalArray();
|
| + var extensions = new InternalArray();
|
| var parts = %_Call(StringSplit, locale, '-');
|
| for (var i = 1; i < parts.length; i++) {
|
| var value = parts[i];
|
|
|