Index: src/string.js |
diff --git a/src/string.js b/src/string.js |
index 039a2b8d54ba7f7b291c0076c2b83b985e7e48cc..2ee8a221df4e5818e6da616e1b39084dc37d8c3d 100644 |
--- a/src/string.js |
+++ b/src/string.js |
@@ -19,7 +19,6 @@ var RegExpExec; |
var RegExpExecNoTests; |
var RegExpLastMatchInfo; |
var ToNumber; |
-var ToString; |
utils.Import(function(from) { |
ArrayIndexOf = from.ArrayIndexOf; |
@@ -28,7 +27,6 @@ utils.Import(function(from) { |
RegExpExecNoTests = from.RegExpExecNoTests; |
RegExpLastMatchInfo = from.RegExpLastMatchInfo; |
ToNumber = from.ToNumber; |
- ToString = from.ToString; |
}); |
//------------------------------------------------------------------- |
@@ -57,7 +55,7 @@ function StringCharAtJS(pos) { |
var result = %_StringCharAt(this, pos); |
if (%_IsSmi(result)) { |
- result = %_StringCharAt(TO_STRING_INLINE(this), TO_INTEGER(pos)); |
+ result = %_StringCharAt(TO_STRING(this), TO_INTEGER(pos)); |
} |
return result; |
} |
@@ -69,7 +67,7 @@ function StringCharCodeAtJS(pos) { |
var result = %_StringCharCodeAt(this, pos); |
if (!%_IsSmi(result)) { |
- result = %_StringCharCodeAt(TO_STRING_INLINE(this), TO_INTEGER(pos)); |
+ result = %_StringCharCodeAt(TO_STRING(this), TO_INTEGER(pos)); |
} |
return result; |
} |
@@ -79,15 +77,15 @@ function StringCharCodeAtJS(pos) { |
function StringConcat(other /* and more */) { // length == 1 |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.concat"); |
var len = %_ArgumentsLength(); |
- var this_as_string = TO_STRING_INLINE(this); |
+ var this_as_string = TO_STRING(this); |
if (len === 1) { |
- return this_as_string + TO_STRING_INLINE(other); |
+ return this_as_string + TO_STRING(other); |
} |
var parts = new InternalArray(len + 1); |
parts[0] = this_as_string; |
for (var i = 0; i < len; i++) { |
var part = %_Arguments(i); |
- parts[i + 1] = TO_STRING_INLINE(part); |
+ parts[i + 1] = TO_STRING(part); |
} |
return %StringBuilderConcat(parts, len + 1, ""); |
} |
@@ -97,8 +95,8 @@ function StringConcat(other /* and more */) { // length == 1 |
function StringIndexOfJS(pattern /* position */) { // length == 1 |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.indexOf"); |
- var subject = TO_STRING_INLINE(this); |
- pattern = TO_STRING_INLINE(pattern); |
+ var subject = TO_STRING(this); |
+ pattern = TO_STRING(pattern); |
var index = 0; |
if (%_ArgumentsLength() > 1) { |
index = %_Arguments(1); // position |
@@ -114,9 +112,9 @@ function StringIndexOfJS(pattern /* position */) { // length == 1 |
function StringLastIndexOfJS(pat /* position */) { // length == 1 |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.lastIndexOf"); |
- var sub = TO_STRING_INLINE(this); |
+ var sub = TO_STRING(this); |
var subLength = sub.length; |
- var pat = TO_STRING_INLINE(pat); |
+ var pat = TO_STRING(pat); |
var patLength = pat.length; |
var index = subLength - patLength; |
if (%_ArgumentsLength() > 1) { |
@@ -145,8 +143,7 @@ function StringLastIndexOfJS(pat /* position */) { // length == 1 |
function StringLocaleCompareJS(other) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.localeCompare"); |
- return %StringLocaleCompare(TO_STRING_INLINE(this), |
- TO_STRING_INLINE(other)); |
+ return %StringLocaleCompare(TO_STRING(this), TO_STRING(other)); |
} |
@@ -154,7 +151,7 @@ function StringLocaleCompareJS(other) { |
function StringMatchJS(regexp) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.match"); |
- var subject = TO_STRING_INLINE(this); |
+ var subject = TO_STRING(this); |
if (IS_REGEXP(regexp)) { |
// Emulate RegExp.prototype.exec's side effect in step 5, even though |
// value is discarded. |
@@ -179,10 +176,10 @@ function StringMatchJS(regexp) { |
// proper functionality. |
function StringNormalizeJS() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.normalize"); |
- var s = TO_STRING_INLINE(this); |
+ var s = TO_STRING(this); |
var formArg = %_Arguments(0); |
- var form = IS_UNDEFINED(formArg) ? 'NFC' : TO_STRING_INLINE(formArg); |
+ var form = IS_UNDEFINED(formArg) ? 'NFC' : TO_STRING(formArg); |
var NORMALIZATION_FORMS = ['NFC', 'NFD', 'NFKC', 'NFKD']; |
var normalizationForm = |
@@ -208,7 +205,7 @@ var reusableMatchInfo = [2, "", "", -1, -1]; |
function StringReplace(search, replace) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.replace"); |
- var subject = TO_STRING_INLINE(this); |
+ var subject = TO_STRING(this); |
// Decision tree for dispatch |
// .. regexp search |
@@ -234,7 +231,7 @@ function StringReplace(search, replace) { |
TO_INTEGER_FOR_SIDE_EFFECT(lastIndex); |
if (!IS_CALLABLE(replace)) { |
- replace = TO_STRING_INLINE(replace); |
+ replace = TO_STRING(replace); |
if (!search.global) { |
// Non-global regexp search, string replace. |
@@ -282,7 +279,7 @@ function StringReplace(search, replace) { |
return StringReplaceNonGlobalRegExpWithFunction(subject, search, replace); |
} |
- search = TO_STRING_INLINE(search); |
+ search = TO_STRING(search); |
if (search.length == 1 && |
subject.length > 0xFF && |
@@ -305,7 +302,7 @@ function StringReplace(search, replace) { |
} else { |
reusableMatchInfo[CAPTURE0] = start; |
reusableMatchInfo[CAPTURE1] = end; |
- result = ExpandReplacement(TO_STRING_INLINE(replace), |
+ result = ExpandReplacement(TO_STRING(replace), |
subject, |
reusableMatchInfo, |
result); |
@@ -467,7 +464,7 @@ function StringReplaceGlobalRegExpWithFunction(subject, regexp, replace) { |
var func_result = replace(elem, match_start, subject); |
// Overwrite the i'th element in the results with the string we got |
// back from the callback function. |
- res[i] = TO_STRING_INLINE(func_result); |
+ res[i] = TO_STRING(func_result); |
match_start += elem.length; |
} |
} |
@@ -481,7 +478,7 @@ function StringReplaceGlobalRegExpWithFunction(subject, regexp, replace) { |
var func_result = %Apply(replace, UNDEFINED, elem, 0, elem.length); |
// Overwrite the i'th element in the results with the string we got |
// back from the callback function. |
- res[i] = TO_STRING_INLINE(func_result); |
+ res[i] = TO_STRING(func_result); |
} |
} |
} |
@@ -539,7 +536,7 @@ function StringSearch(re) { |
} else { |
regexp = new GlobalRegExp(re); |
} |
- var match = RegExpExec(regexp, TO_STRING_INLINE(this), 0); |
+ var match = RegExpExec(regexp, TO_STRING(this), 0); |
if (match) { |
return match[CAPTURE0]; |
} |
@@ -551,7 +548,7 @@ function StringSearch(re) { |
function StringSlice(start, end) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.slice"); |
- var s = TO_STRING_INLINE(this); |
+ var s = TO_STRING(this); |
var s_len = s.length; |
var start_i = TO_INTEGER(start); |
var end_i = s_len; |
@@ -593,12 +590,12 @@ function StringSlice(start, end) { |
function StringSplitJS(separator, limit) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.split"); |
- var subject = TO_STRING_INLINE(this); |
+ var subject = TO_STRING(this); |
limit = (IS_UNDEFINED(limit)) ? 0xffffffff : TO_UINT32(limit); |
var length = subject.length; |
if (!IS_REGEXP(separator)) { |
- var separator_string = TO_STRING_INLINE(separator); |
+ var separator_string = TO_STRING(separator); |
if (limit === 0) return []; |
@@ -685,7 +682,7 @@ function StringSplitOnRegExp(subject, separator, limit, length) { |
function StringSubstring(start, end) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.subString"); |
- var s = TO_STRING_INLINE(this); |
+ var s = TO_STRING(this); |
var s_len = s.length; |
var start_i = TO_INTEGER(start); |
@@ -718,7 +715,7 @@ function StringSubstring(start, end) { |
function StringSubstr(start, n) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.substr"); |
- var s = TO_STRING_INLINE(this); |
+ var s = TO_STRING(this); |
var len; |
// Correct n: If not given, set to string length; if explicitly |
@@ -758,7 +755,7 @@ function StringSubstr(start, n) { |
function StringToLowerCaseJS() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.toLowerCase"); |
- return %StringToLowerCase(TO_STRING_INLINE(this)); |
+ return %StringToLowerCase(TO_STRING(this)); |
} |
@@ -766,7 +763,7 @@ function StringToLowerCaseJS() { |
function StringToLocaleLowerCase() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.toLocaleLowerCase"); |
- return %StringToLowerCase(TO_STRING_INLINE(this)); |
+ return %StringToLowerCase(TO_STRING(this)); |
} |
@@ -774,7 +771,7 @@ function StringToLocaleLowerCase() { |
function StringToUpperCaseJS() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.toUpperCase"); |
- return %StringToUpperCase(TO_STRING_INLINE(this)); |
+ return %StringToUpperCase(TO_STRING(this)); |
} |
@@ -782,26 +779,26 @@ function StringToUpperCaseJS() { |
function StringToLocaleUpperCase() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.toLocaleUpperCase"); |
- return %StringToUpperCase(TO_STRING_INLINE(this)); |
+ return %StringToUpperCase(TO_STRING(this)); |
} |
// ES5, 15.5.4.20 |
function StringTrimJS() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.trim"); |
- return %StringTrim(TO_STRING_INLINE(this), true, true); |
+ return %StringTrim(TO_STRING(this), true, true); |
} |
function StringTrimLeft() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.trimLeft"); |
- return %StringTrim(TO_STRING_INLINE(this), true, false); |
+ return %StringTrim(TO_STRING(this), true, false); |
} |
function StringTrimRight() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.trimRight"); |
- return %StringTrim(TO_STRING_INLINE(this), false, true); |
+ return %StringTrim(TO_STRING(this), false, true); |
} |
@@ -837,14 +834,14 @@ function StringFromCharCode(code) { |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.2.1 |
function HtmlEscape(str) { |
- return %_CallFunction(TO_STRING_INLINE(str), /"/g, """, StringReplace); |
+ return %_CallFunction(TO_STRING(str), /"/g, """, StringReplace); |
} |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.2 |
function StringAnchor(name) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.anchor"); |
- return "<a name=\"" + HtmlEscape(name) + "\">" + TO_STRING_INLINE(this) + |
+ return "<a name=\"" + HtmlEscape(name) + "\">" + TO_STRING(this) + |
"</a>"; |
} |
@@ -852,35 +849,35 @@ function StringAnchor(name) { |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.3 |
function StringBig() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.big"); |
- return "<big>" + TO_STRING_INLINE(this) + "</big>"; |
+ return "<big>" + TO_STRING(this) + "</big>"; |
} |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.4 |
function StringBlink() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.blink"); |
- return "<blink>" + TO_STRING_INLINE(this) + "</blink>"; |
+ return "<blink>" + TO_STRING(this) + "</blink>"; |
} |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.5 |
function StringBold() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.bold"); |
- return "<b>" + TO_STRING_INLINE(this) + "</b>"; |
+ return "<b>" + TO_STRING(this) + "</b>"; |
} |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.6 |
function StringFixed() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.fixed"); |
- return "<tt>" + TO_STRING_INLINE(this) + "</tt>"; |
+ return "<tt>" + TO_STRING(this) + "</tt>"; |
} |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.7 |
function StringFontcolor(color) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.fontcolor"); |
- return "<font color=\"" + HtmlEscape(color) + "\">" + TO_STRING_INLINE(this) + |
+ return "<font color=\"" + HtmlEscape(color) + "\">" + TO_STRING(this) + |
"</font>"; |
} |
@@ -888,7 +885,7 @@ function StringFontcolor(color) { |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.8 |
function StringFontsize(size) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.fontsize"); |
- return "<font size=\"" + HtmlEscape(size) + "\">" + TO_STRING_INLINE(this) + |
+ return "<font size=\"" + HtmlEscape(size) + "\">" + TO_STRING(this) + |
"</font>"; |
} |
@@ -896,49 +893,49 @@ function StringFontsize(size) { |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.9 |
function StringItalics() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.italics"); |
- return "<i>" + TO_STRING_INLINE(this) + "</i>"; |
+ return "<i>" + TO_STRING(this) + "</i>"; |
} |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.10 |
function StringLink(s) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.link"); |
- return "<a href=\"" + HtmlEscape(s) + "\">" + TO_STRING_INLINE(this) + "</a>"; |
+ return "<a href=\"" + HtmlEscape(s) + "\">" + TO_STRING(this) + "</a>"; |
} |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.11 |
function StringSmall() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.small"); |
- return "<small>" + TO_STRING_INLINE(this) + "</small>"; |
+ return "<small>" + TO_STRING(this) + "</small>"; |
} |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.12 |
function StringStrike() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.strike"); |
- return "<strike>" + TO_STRING_INLINE(this) + "</strike>"; |
+ return "<strike>" + TO_STRING(this) + "</strike>"; |
} |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.13 |
function StringSub() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.sub"); |
- return "<sub>" + TO_STRING_INLINE(this) + "</sub>"; |
+ return "<sub>" + TO_STRING(this) + "</sub>"; |
} |
// ES6 draft, revision 26 (2014-07-18), section B.2.3.14 |
function StringSup() { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.sup"); |
- return "<sup>" + TO_STRING_INLINE(this) + "</sup>"; |
+ return "<sup>" + TO_STRING(this) + "</sup>"; |
} |
// ES6 draft 01-20-14, section 21.1.3.13 |
function StringRepeat(count) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.repeat"); |
- var s = TO_STRING_INLINE(this); |
+ var s = TO_STRING(this); |
var n = $toInteger(count); |
// The maximum string length is stored in a smi, so a longer repeat |
// must result in a range error. |
@@ -958,13 +955,13 @@ function StringRepeat(count) { |
function StringStartsWith(searchString /* position */) { // length == 1 |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.startsWith"); |
- var s = TO_STRING_INLINE(this); |
+ var s = TO_STRING(this); |
if (IS_REGEXP(searchString)) { |
throw MakeTypeError(kFirstArgumentNotRegExp, "String.prototype.startsWith"); |
} |
- var ss = TO_STRING_INLINE(searchString); |
+ var ss = TO_STRING(searchString); |
var pos = 0; |
if (%_ArgumentsLength() > 1) { |
var arg = %_Arguments(1); // position |
@@ -996,13 +993,13 @@ function StringStartsWith(searchString /* position */) { // length == 1 |
function StringEndsWith(searchString /* position */) { // length == 1 |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.endsWith"); |
- var s = TO_STRING_INLINE(this); |
+ var s = TO_STRING(this); |
if (IS_REGEXP(searchString)) { |
throw MakeTypeError(kFirstArgumentNotRegExp, "String.prototype.endsWith"); |
} |
- var ss = TO_STRING_INLINE(searchString); |
+ var ss = TO_STRING(searchString); |
var s_len = s.length; |
var pos = s_len; |
if (%_ArgumentsLength() > 1) { |
@@ -1035,13 +1032,13 @@ function StringEndsWith(searchString /* position */) { // length == 1 |
function StringIncludes(searchString /* position */) { // length == 1 |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.includes"); |
- var string = TO_STRING_INLINE(this); |
+ var string = TO_STRING(this); |
if (IS_REGEXP(searchString)) { |
throw MakeTypeError(kFirstArgumentNotRegExp, "String.prototype.includes"); |
} |
- searchString = TO_STRING_INLINE(searchString); |
+ searchString = TO_STRING(searchString); |
var pos = 0; |
if (%_ArgumentsLength() > 1) { |
pos = %_Arguments(1); // position |
@@ -1065,7 +1062,7 @@ function StringIncludes(searchString /* position */) { // length == 1 |
function StringCodePointAt(pos) { |
CHECK_OBJECT_COERCIBLE(this, "String.prototype.codePointAt"); |
- var string = TO_STRING_INLINE(this); |
+ var string = TO_STRING(this); |
var size = string.length; |
pos = TO_INTEGER(pos); |
if (pos < 0 || pos >= size) { |
@@ -1121,13 +1118,13 @@ function StringRaw(callSite) { |
var literalSegments = $toLength(raw.length); |
if (literalSegments <= 0) return ""; |
- var result = ToString(raw[0]); |
+ var result = TO_STRING(raw[0]); |
for (var i = 1; i < literalSegments; ++i) { |
if (i < numberOfSubstitutions) { |
- result += ToString(%_Arguments(i)); |
+ result += TO_STRING(%_Arguments(i)); |
} |
- result += ToString(raw[i]); |
+ result += TO_STRING(raw[i]); |
} |
return result; |