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

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

Issue 1877263002: Revert of [builtins] Migrate String.prototype.charCodeAt and String.prototype.charAt to TurboFan. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: 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
« no previous file with comments | « src/js/messages.js ('k') | src/runtime/runtime.h » ('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 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
60 // ECMA-262, section 15.5.4.6 84 // ECMA-262, section 15.5.4.6
61 function StringConcat(other /* and more */) { // length == 1 85 function StringConcat(other /* and more */) { // length == 1
62 "use strict"; 86 "use strict";
63 CHECK_OBJECT_COERCIBLE(this, "String.prototype.concat"); 87 CHECK_OBJECT_COERCIBLE(this, "String.prototype.concat");
64 var s = TO_STRING(this); 88 var s = TO_STRING(this);
65 var len = arguments.length; 89 var len = arguments.length;
66 for (var i = 0; i < len; ++i) { 90 for (var i = 0; i < len; ++i) {
67 s = s + TO_STRING(arguments[i]); 91 s = s + TO_STRING(arguments[i]);
68 } 92 }
69 return s; 93 return s;
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 result += TO_STRING(arguments[i]); 850 result += TO_STRING(arguments[i]);
827 } 851 }
828 result += TO_STRING(raw[i]); 852 result += TO_STRING(raw[i]);
829 } 853 }
830 854
831 return result; 855 return result;
832 } 856 }
833 857
834 // ------------------------------------------------------------------- 858 // -------------------------------------------------------------------
835 859
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
836 // Set up the non-enumerable functions on the String object. 867 // Set up the non-enumerable functions on the String object.
837 utils.InstallFunctions(GlobalString, DONT_ENUM, [ 868 utils.InstallFunctions(GlobalString, DONT_ENUM, [
838 "fromCharCode", StringFromCharCode, 869 "fromCharCode", StringFromCharCode,
839 "fromCodePoint", StringFromCodePoint, 870 "fromCodePoint", StringFromCodePoint,
840 "raw", StringRaw 871 "raw", StringRaw
841 ]); 872 ]);
842 873
843 // Set up the non-enumerable functions on the String prototype object. 874 // Set up the non-enumerable functions on the String prototype object.
844 utils.InstallFunctions(GlobalString.prototype, DONT_ENUM, [ 875 utils.InstallFunctions(GlobalString.prototype, DONT_ENUM, [
845 "valueOf", StringValueOf, 876 "valueOf", StringValueOf,
846 "toString", StringToString, 877 "toString", StringToString,
878 "charAt", StringCharAtJS,
879 "charCodeAt", StringCharCodeAtJS,
847 "codePointAt", StringCodePointAt, 880 "codePointAt", StringCodePointAt,
848 "concat", StringConcat, 881 "concat", StringConcat,
849 "endsWith", StringEndsWith, 882 "endsWith", StringEndsWith,
850 "includes", StringIncludes, 883 "includes", StringIncludes,
851 "indexOf", StringIndexOf, 884 "indexOf", StringIndexOf,
852 "lastIndexOf", StringLastIndexOf, 885 "lastIndexOf", StringLastIndexOf,
853 "localeCompare", StringLocaleCompareJS, 886 "localeCompare", StringLocaleCompareJS,
854 "match", StringMatchJS, 887 "match", StringMatchJS,
855 "normalize", StringNormalize, 888 "normalize", StringNormalize,
856 "repeat", StringRepeat, 889 "repeat", StringRepeat,
(...skipping 25 matching lines...) Expand all
882 "strike", StringStrike, 915 "strike", StringStrike,
883 "sub", StringSub, 916 "sub", StringSub,
884 "sup", StringSup 917 "sup", StringSup
885 ]); 918 ]);
886 919
887 // ------------------------------------------------------------------- 920 // -------------------------------------------------------------------
888 // Exports 921 // Exports
889 922
890 utils.Export(function(to) { 923 utils.Export(function(to) {
891 to.ExpandReplacement = ExpandReplacement; 924 to.ExpandReplacement = ExpandReplacement;
925 to.StringCharAt = StringCharAtJS;
892 to.StringIndexOf = StringIndexOf; 926 to.StringIndexOf = StringIndexOf;
893 to.StringLastIndexOf = StringLastIndexOf; 927 to.StringLastIndexOf = StringLastIndexOf;
894 to.StringMatch = StringMatchJS; 928 to.StringMatch = StringMatchJS;
895 to.StringReplace = StringReplace; 929 to.StringReplace = StringReplace;
896 to.StringSlice = StringSlice; 930 to.StringSlice = StringSlice;
897 to.StringSplit = StringSplitJS; 931 to.StringSplit = StringSplitJS;
898 to.StringSubstr = StringSubstr; 932 to.StringSubstr = StringSubstr;
899 to.StringSubstring = StringSubstring; 933 to.StringSubstring = StringSubstring;
900 }); 934 });
901 935
902 }) 936 })
OLDNEW
« no previous file with comments | « src/js/messages.js ('k') | src/runtime/runtime.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698