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

Side by Side Diff: src/js/i18n.js

Issue 2126073002: Avoid calling the builtin String.prototype.split in Intl (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 5 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 | « no previous file | test/intl/regress-5179.js » ('j') | 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 */
(...skipping 23 matching lines...) Expand all
34 var MakeError; 34 var MakeError;
35 var MakeRangeError; 35 var MakeRangeError;
36 var MakeTypeError; 36 var MakeTypeError;
37 var ObjectHasOwnProperty = utils.ImportNow("ObjectHasOwnProperty"); 37 var ObjectHasOwnProperty = utils.ImportNow("ObjectHasOwnProperty");
38 var OverrideFunction = utils.OverrideFunction; 38 var OverrideFunction = utils.OverrideFunction;
39 var patternSymbol = utils.ImportNow("intl_pattern_symbol"); 39 var patternSymbol = utils.ImportNow("intl_pattern_symbol");
40 var resolvedSymbol = utils.ImportNow("intl_resolved_symbol"); 40 var resolvedSymbol = utils.ImportNow("intl_resolved_symbol");
41 var SetFunctionName = utils.SetFunctionName; 41 var SetFunctionName = utils.SetFunctionName;
42 var StringIndexOf; 42 var StringIndexOf;
43 var StringLastIndexOf; 43 var StringLastIndexOf;
44 var StringSplit;
45 var StringSubstr; 44 var StringSubstr;
46 var StringSubstring; 45 var StringSubstring;
47 46
48 utils.Import(function(from) { 47 utils.Import(function(from) {
49 ArrayIndexOf = from.ArrayIndexOf; 48 ArrayIndexOf = from.ArrayIndexOf;
50 ArrayJoin = from.ArrayJoin; 49 ArrayJoin = from.ArrayJoin;
51 ArrayPush = from.ArrayPush; 50 ArrayPush = from.ArrayPush;
52 IsNaN = from.IsNaN; 51 IsNaN = from.IsNaN;
53 MakeError = from.MakeError; 52 MakeError = from.MakeError;
54 MakeRangeError = from.MakeRangeError; 53 MakeRangeError = from.MakeRangeError;
55 MakeTypeError = from.MakeTypeError; 54 MakeTypeError = from.MakeTypeError;
56 InternalRegExpMatch = from.InternalRegExpMatch; 55 InternalRegExpMatch = from.InternalRegExpMatch;
57 InternalRegExpReplace = from.InternalRegExpReplace; 56 InternalRegExpReplace = from.InternalRegExpReplace;
58 StringIndexOf = from.StringIndexOf; 57 StringIndexOf = from.StringIndexOf;
59 StringLastIndexOf = from.StringLastIndexOf; 58 StringLastIndexOf = from.StringLastIndexOf;
60 StringSplit = from.StringSplit;
61 StringSubstr = from.StringSubstr; 59 StringSubstr = from.StringSubstr;
62 StringSubstring = from.StringSubstring; 60 StringSubstring = from.StringSubstring;
63 }); 61 });
64 62
65 utils.ImportFromExperimental(function(from) { 63 utils.ImportFromExperimental(function(from) {
66 FLAG_intl_extra = from.FLAG_intl_extra; 64 FLAG_intl_extra = from.FLAG_intl_extra;
67 }); 65 });
68 66
69 // Utilities for definitions 67 // Utilities for definitions
70 68
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 this[internalName] = boundMethod; 116 this[internalName] = boundMethod;
119 } 117 }
120 return this[internalName]; 118 return this[internalName];
121 }); 119 });
122 120
123 %FunctionRemovePrototype(getter); 121 %FunctionRemovePrototype(getter);
124 %DefineGetterPropertyUnchecked(obj.prototype, methodName, getter, DONT_ENUM); 122 %DefineGetterPropertyUnchecked(obj.prototype, methodName, getter, DONT_ENUM);
125 %SetNativeFlag(getter); 123 %SetNativeFlag(getter);
126 } 124 }
127 125
126 // Special StringSplit function for this file; does not work with RegExps
127 // or access Symbol.split, but per spec, is just for strings.
128 function StringSplit(separator, limit) {
129 var subject = TO_STRING(this);
130 var separator_string = TO_STRING(separator);
131 limit = (IS_UNDEFINED(limit)) ? kMaxUint32 : TO_UINT32(limit);
Yang 2016/07/07 09:13:01 I don't think StringSplit is used with the optiona
Dan Ehrenberg 2016/07/07 18:35:42 That's true; I don't see a real need to call TO_ST
132 return %StringSplit(this, separator, limit);
133 }
134
128 // ------------------------------------------------------------------- 135 // -------------------------------------------------------------------
129 136
130 var Intl = {}; 137 var Intl = {};
131 138
132 %AddNamedProperty(global, "Intl", Intl, DONT_ENUM); 139 %AddNamedProperty(global, "Intl", Intl, DONT_ENUM);
133 140
134 /** 141 /**
135 * Caches available locales for each service. 142 * Caches available locales for each service.
136 */ 143 */
137 var AVAILABLE_LOCALES = { 144 var AVAILABLE_LOCALES = {
(...skipping 2113 matching lines...) Expand 10 before | Expand all | Expand 10 after
2251 } 2258 }
2252 ); 2259 );
2253 2260
2254 utils.Export(function(to) { 2261 utils.Export(function(to) {
2255 to.AddBoundMethod = AddBoundMethod; 2262 to.AddBoundMethod = AddBoundMethod;
2256 to.IntlParseDate = IntlParseDate; 2263 to.IntlParseDate = IntlParseDate;
2257 to.IntlParseNumber = IntlParseNumber; 2264 to.IntlParseNumber = IntlParseNumber;
2258 }); 2265 });
2259 2266
2260 }) 2267 })
OLDNEW
« no previous file with comments | « no previous file | test/intl/regress-5179.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698