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

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

Issue 1868963002: [builtins] Migrate String.prototype.charCodeAt and String.prototype.charAt to TurboFan. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix typo Created 4 years, 8 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 (function(global, utils) { 5 (function(global, utils) {
6 6
7 %CheckIsBootstrapping(); 7 %CheckIsBootstrapping();
8 8
9 // ------------------------------------------------------------------- 9 // -------------------------------------------------------------------
10 // Imports 10 // Imports
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 50
51 // ECMA-262 section 15.5.4.3 51 // ECMA-262 section 15.5.4.3
52 function StringValueOf() { 52 function StringValueOf() {
53 if (!IS_STRING(this) && !IS_STRING_WRAPPER(this)) { 53 if (!IS_STRING(this) && !IS_STRING_WRAPPER(this)) {
54 throw MakeTypeError(kNotGeneric, 'String.prototype.valueOf'); 54 throw MakeTypeError(kNotGeneric, 'String.prototype.valueOf');
55 } 55 }
56 return %_ValueOf(this); 56 return %_ValueOf(this);
57 } 57 }
58 58
59 59
60 // ECMA-262, section 15.5.4.4
61 function StringCharAtJS(pos) {
62 CHECK_OBJECT_COERCIBLE(this, "String.prototype.charAt");
63
64 var result = %_StringCharAt(this, pos);
65 if (%_IsSmi(result)) {
66 result = %_StringCharAt(TO_STRING(this), TO_INTEGER(pos));
67 }
68 return result;
69 }
70
71
72 // ECMA-262 section 15.5.4.5
73 function StringCharCodeAtJS(pos) {
74 CHECK_OBJECT_COERCIBLE(this, "String.prototype.charCodeAt");
75
76 var result = %_StringCharCodeAt(this, pos);
77 if (!%_IsSmi(result)) {
78 result = %_StringCharCodeAt(TO_STRING(this), TO_INTEGER(pos));
79 }
80 return result;
81 }
82
83
84 // ECMA-262, section 15.5.4.6 60 // ECMA-262, section 15.5.4.6
85 function StringConcat(other /* and more */) { // length == 1 61 function StringConcat(other /* and more */) { // length == 1
86 "use strict"; 62 "use strict";
87 CHECK_OBJECT_COERCIBLE(this, "String.prototype.concat"); 63 CHECK_OBJECT_COERCIBLE(this, "String.prototype.concat");
88 var s = TO_STRING(this); 64 var s = TO_STRING(this);
89 var len = arguments.length; 65 var len = arguments.length;
90 for (var i = 0; i < len; ++i) { 66 for (var i = 0; i < len; ++i) {
91 s = s + TO_STRING(arguments[i]); 67 s = s + TO_STRING(arguments[i]);
92 } 68 }
93 return s; 69 return s;
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 result += TO_STRING(arguments[i]); 826 result += TO_STRING(arguments[i]);
851 } 827 }
852 result += TO_STRING(raw[i]); 828 result += TO_STRING(raw[i]);
853 } 829 }
854 830
855 return result; 831 return result;
856 } 832 }
857 833
858 // ------------------------------------------------------------------- 834 // -------------------------------------------------------------------
859 835
860 // Set the String function and constructor.
861 %FunctionSetPrototype(GlobalString, new GlobalString());
862
863 // Set up the constructor property on the String prototype object.
864 %AddNamedProperty(
865 GlobalString.prototype, "constructor", GlobalString, DONT_ENUM);
866
867 // Set up the non-enumerable functions on the String object. 836 // Set up the non-enumerable functions on the String object.
868 utils.InstallFunctions(GlobalString, DONT_ENUM, [ 837 utils.InstallFunctions(GlobalString, DONT_ENUM, [
869 "fromCharCode", StringFromCharCode, 838 "fromCharCode", StringFromCharCode,
870 "fromCodePoint", StringFromCodePoint, 839 "fromCodePoint", StringFromCodePoint,
871 "raw", StringRaw 840 "raw", StringRaw
872 ]); 841 ]);
873 842
874 // Set up the non-enumerable functions on the String prototype object. 843 // Set up the non-enumerable functions on the String prototype object.
875 utils.InstallFunctions(GlobalString.prototype, DONT_ENUM, [ 844 utils.InstallFunctions(GlobalString.prototype, DONT_ENUM, [
876 "valueOf", StringValueOf, 845 "valueOf", StringValueOf,
877 "toString", StringToString, 846 "toString", StringToString,
878 "charAt", StringCharAtJS,
879 "charCodeAt", StringCharCodeAtJS,
880 "codePointAt", StringCodePointAt, 847 "codePointAt", StringCodePointAt,
881 "concat", StringConcat, 848 "concat", StringConcat,
882 "endsWith", StringEndsWith, 849 "endsWith", StringEndsWith,
883 "includes", StringIncludes, 850 "includes", StringIncludes,
884 "indexOf", StringIndexOf, 851 "indexOf", StringIndexOf,
885 "lastIndexOf", StringLastIndexOf, 852 "lastIndexOf", StringLastIndexOf,
886 "localeCompare", StringLocaleCompareJS, 853 "localeCompare", StringLocaleCompareJS,
887 "match", StringMatchJS, 854 "match", StringMatchJS,
888 "normalize", StringNormalize, 855 "normalize", StringNormalize,
889 "repeat", StringRepeat, 856 "repeat", StringRepeat,
(...skipping 25 matching lines...) Expand all
915 "strike", StringStrike, 882 "strike", StringStrike,
916 "sub", StringSub, 883 "sub", StringSub,
917 "sup", StringSup 884 "sup", StringSup
918 ]); 885 ]);
919 886
920 // ------------------------------------------------------------------- 887 // -------------------------------------------------------------------
921 // Exports 888 // Exports
922 889
923 utils.Export(function(to) { 890 utils.Export(function(to) {
924 to.ExpandReplacement = ExpandReplacement; 891 to.ExpandReplacement = ExpandReplacement;
925 to.StringCharAt = StringCharAtJS;
926 to.StringIndexOf = StringIndexOf; 892 to.StringIndexOf = StringIndexOf;
927 to.StringLastIndexOf = StringLastIndexOf; 893 to.StringLastIndexOf = StringLastIndexOf;
928 to.StringMatch = StringMatchJS; 894 to.StringMatch = StringMatchJS;
929 to.StringReplace = StringReplace; 895 to.StringReplace = StringReplace;
930 to.StringSlice = StringSlice; 896 to.StringSlice = StringSlice;
931 to.StringSplit = StringSplitJS; 897 to.StringSplit = StringSplitJS;
932 to.StringSubstr = StringSubstr; 898 to.StringSubstr = StringSubstr;
933 to.StringSubstring = StringSubstring; 899 to.StringSubstring = StringSubstring;
934 }); 900 });
935 901
936 }) 902 })
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698