Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(476)

Side by Side Diff: src/i18n.js

Issue 1309503003: Install js intrinsic fallbacks for array functions on the native context. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@context_intrinsics
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/contexts.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // ECMAScript 402 API implementation. 5 // ECMAScript 402 API implementation.
6 6
7 /** 7 /**
8 * Intl object is a single object that has some named properties, 8 * Intl object is a single object that has some named properties,
9 * all of which are constructors. 9 * all of which are constructors.
10 */ 10 */
11 (function(global, utils) { 11 (function(global, utils) {
12 12
13 "use strict"; 13 "use strict";
14 14
15 %CheckIsBootstrapping(); 15 %CheckIsBootstrapping();
16 16
17 // ------------------------------------------------------------------- 17 // -------------------------------------------------------------------
18 // Imports 18 // Imports
19 19
20 var ArrayIndexOf; 20 var ArrayIndexOf;
21 var ArrayJoin; 21 var ArrayJoin;
22 var ArrayPush;
22 var IsFinite; 23 var IsFinite;
23 var IsNaN; 24 var IsNaN;
24 var GlobalBoolean = global.Boolean; 25 var GlobalBoolean = global.Boolean;
25 var GlobalDate = global.Date; 26 var GlobalDate = global.Date;
26 var GlobalNumber = global.Number; 27 var GlobalNumber = global.Number;
27 var GlobalRegExp = global.RegExp; 28 var GlobalRegExp = global.RegExp;
28 var GlobalString = global.String; 29 var GlobalString = global.String;
29 var MathFloor; 30 var MathFloor;
30 var RegExpTest; 31 var RegExpTest;
31 var StringIndexOf; 32 var StringIndexOf;
32 var StringLastIndexOf; 33 var StringLastIndexOf;
33 var StringMatch; 34 var StringMatch;
34 var StringReplace; 35 var StringReplace;
35 var StringSplit; 36 var StringSplit;
36 var StringSubstr; 37 var StringSubstr;
37 var StringSubstring; 38 var StringSubstring;
38 39
39 utils.Import(function(from) { 40 utils.Import(function(from) {
40 ArrayIndexOf = from.ArrayIndexOf; 41 ArrayIndexOf = from.ArrayIndexOf;
41 ArrayJoin = from.ArrayJoin; 42 ArrayJoin = from.ArrayJoin;
43 ArrayPush = from.ArrayPush;
42 IsFinite = from.IsFinite; 44 IsFinite = from.IsFinite;
43 IsNaN = from.IsNaN; 45 IsNaN = from.IsNaN;
44 MathFloor = from.MathFloor; 46 MathFloor = from.MathFloor;
45 RegExpTest = from.RegExpTest; 47 RegExpTest = from.RegExpTest;
46 StringIndexOf = from.StringIndexOf; 48 StringIndexOf = from.StringIndexOf;
47 StringLastIndexOf = from.StringLastIndexOf; 49 StringLastIndexOf = from.StringLastIndexOf;
48 StringMatch = from.StringMatch; 50 StringMatch = from.StringMatch;
49 StringReplace = from.StringReplace; 51 StringReplace = from.StringReplace;
50 StringSplit = from.StringSplit; 52 StringSplit = from.StringSplit;
51 StringSubstr = from.StringSubstr; 53 StringSubstr = from.StringSubstr;
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 */ 293 */
292 function lookupSupportedLocalesOf(requestedLocales, availableLocales) { 294 function lookupSupportedLocalesOf(requestedLocales, availableLocales) {
293 var matchedLocales = []; 295 var matchedLocales = [];
294 for (var i = 0; i < requestedLocales.length; ++i) { 296 for (var i = 0; i < requestedLocales.length; ++i) {
295 // Remove -u- extension. 297 // Remove -u- extension.
296 var locale = %_CallFunction(requestedLocales[i], GetUnicodeExtensionRE(), 298 var locale = %_CallFunction(requestedLocales[i], GetUnicodeExtensionRE(),
297 '', StringReplace); 299 '', StringReplace);
298 do { 300 do {
299 if (!IS_UNDEFINED(availableLocales[locale])) { 301 if (!IS_UNDEFINED(availableLocales[locale])) {
300 // Push requested locale not the resolved one. 302 // Push requested locale not the resolved one.
301 %_CallFunction(matchedLocales, requestedLocales[i], $arrayPush); 303 %_CallFunction(matchedLocales, requestedLocales[i], ArrayPush);
302 break; 304 break;
303 } 305 }
304 // Truncate locale if possible, if not break. 306 // Truncate locale if possible, if not break.
305 var pos = %_CallFunction(locale, '-', StringLastIndexOf); 307 var pos = %_CallFunction(locale, '-', StringLastIndexOf);
306 if (pos === -1) { 308 if (pos === -1) {
307 break; 309 break;
308 } 310 }
309 locale = %_CallFunction(locale, 0, pos, StringSubstring); 311 locale = %_CallFunction(locale, 0, pos, StringSubstring);
310 } while (true); 312 } while (true);
311 } 313 }
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 * Throws on locales that are not well formed BCP47 tags. 710 * Throws on locales that are not well formed BCP47 tags.
709 */ 711 */
710 function initializeLocaleList(locales) { 712 function initializeLocaleList(locales) {
711 var seen = []; 713 var seen = [];
712 if (IS_UNDEFINED(locales)) { 714 if (IS_UNDEFINED(locales)) {
713 // Constructor is called without arguments. 715 // Constructor is called without arguments.
714 seen = []; 716 seen = [];
715 } else { 717 } else {
716 // We allow single string localeID. 718 // We allow single string localeID.
717 if (typeof locales === 'string') { 719 if (typeof locales === 'string') {
718 %_CallFunction(seen, canonicalizeLanguageTag(locales), $arrayPush); 720 %_CallFunction(seen, canonicalizeLanguageTag(locales), ArrayPush);
719 return freezeArray(seen); 721 return freezeArray(seen);
720 } 722 }
721 723
722 var o = TO_OBJECT(locales); 724 var o = TO_OBJECT(locales);
723 var len = TO_UINT32(o.length); 725 var len = TO_UINT32(o.length);
724 726
725 for (var k = 0; k < len; k++) { 727 for (var k = 0; k < len; k++) {
726 if (k in o) { 728 if (k in o) {
727 var value = o[k]; 729 var value = o[k];
728 730
729 var tag = canonicalizeLanguageTag(value); 731 var tag = canonicalizeLanguageTag(value);
730 732
731 if (%_CallFunction(seen, tag, ArrayIndexOf) === -1) { 733 if (%_CallFunction(seen, tag, ArrayIndexOf) === -1) {
732 %_CallFunction(seen, tag, $arrayPush); 734 %_CallFunction(seen, tag, ArrayPush);
733 } 735 }
734 } 736 }
735 } 737 }
736 } 738 }
737 739
738 return freezeArray(seen); 740 return freezeArray(seen);
739 } 741 }
740 742
741 743
742 /** 744 /**
(...skipping 25 matching lines...) Expand all
768 // We are matching i-klingon here, but that's ok, since i-klingon-klingon 770 // We are matching i-klingon here, but that's ok, since i-klingon-klingon
769 // is not valid and would fail LANGUAGE_TAG_RE test. 771 // is not valid and would fail LANGUAGE_TAG_RE test.
770 var variants = []; 772 var variants = [];
771 var extensions = []; 773 var extensions = [];
772 var parts = %_CallFunction(locale, /-/, StringSplit); 774 var parts = %_CallFunction(locale, /-/, StringSplit);
773 for (var i = 1; i < parts.length; i++) { 775 for (var i = 1; i < parts.length; i++) {
774 var value = parts[i]; 776 var value = parts[i];
775 if (%_CallFunction(GetLanguageVariantRE(), value, RegExpTest) && 777 if (%_CallFunction(GetLanguageVariantRE(), value, RegExpTest) &&
776 extensions.length === 0) { 778 extensions.length === 0) {
777 if (%_CallFunction(variants, value, ArrayIndexOf) === -1) { 779 if (%_CallFunction(variants, value, ArrayIndexOf) === -1) {
778 %_CallFunction(variants, value, $arrayPush); 780 %_CallFunction(variants, value, ArrayPush);
779 } else { 781 } else {
780 return false; 782 return false;
781 } 783 }
782 } 784 }
783 785
784 if (%_CallFunction(GetLanguageSingletonRE(), value, RegExpTest)) { 786 if (%_CallFunction(GetLanguageSingletonRE(), value, RegExpTest)) {
785 if (%_CallFunction(extensions, value, ArrayIndexOf) === -1) { 787 if (%_CallFunction(extensions, value, ArrayIndexOf) === -1) {
786 %_CallFunction(extensions, value, $arrayPush); 788 %_CallFunction(extensions, value, ArrayPush);
787 } else { 789 } else {
788 return false; 790 return false;
789 } 791 }
790 } 792 }
791 } 793 }
792 794
793 return true; 795 return true;
794 } 796 }
795 797
796 798
(...skipping 1314 matching lines...) Expand 10 before | Expand all | Expand 10 after
2111 } 2113 }
2112 2114
2113 var locales = %_Arguments(0); 2115 var locales = %_Arguments(0);
2114 var options = %_Arguments(1); 2116 var options = %_Arguments(1);
2115 return toLocaleDateTime( 2117 return toLocaleDateTime(
2116 this, locales, options, 'time', 'time', 'dateformattime'); 2118 this, locales, options, 'time', 'time', 'dateformattime');
2117 } 2119 }
2118 ); 2120 );
2119 2121
2120 }) 2122 })
OLDNEW
« no previous file with comments | « src/contexts.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698