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

Unified Diff: src/string.js

Issue 6223: Make sure that the name accessor on functions return the expected... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 12 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/runtime.js ('k') | src/uri.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/string.js
===================================================================
--- src/string.js (revision 413)
+++ src/string.js (working copy)
@@ -46,17 +46,20 @@
%AddProperty($String.prototype, "constructor", $String, DONT_ENUM);
-%AddProperty($String.prototype, "valueOf", function() {
+%AddProperty($String.prototype, "valueOf", function valueOf() {
if (!IS_STRING(this) && %ClassOf(this) !== 'String')
throw new $TypeError('String.prototype.valueOf is not generic');
return %_ValueOf(this);
}, DONT_ENUM);
+%AddProperty($String.prototype, "toString", function toString() {
+ if (!IS_STRING(this) && %ClassOf(this) !== 'String')
+ throw new $TypeError('String.prototype.toString is not generic');
+ return %_ValueOf(this);
+}, DONT_ENUM);
-%AddProperty($String.prototype, "toString", $String.prototype.valueOf, DONT_ENUM);
-
// ECMA-262 section 15.5.4.5
-%AddProperty($String.prototype, "charCodeAt", function(pos) {
+%AddProperty($String.prototype, "charCodeAt", function charCodeAt(pos) {
var fast_answer = %_FastCharCodeAt(this, pos);
if (%_IsSmi(fast_answer)) {
return fast_answer;
@@ -68,7 +71,7 @@
// ECMA-262, section 15.5.4.6
-%AddProperty($String.prototype, "concat", function() {
+%AddProperty($String.prototype, "concat", function concat() {
var len = %_ArgumentsLength();
var parts = new $Array(len + 1);
parts[0] = ToString(this);
@@ -92,7 +95,7 @@
// ECMA-262, section 15.5.4.11
-%AddProperty($String.prototype, "replace", function (search, replace) {
+%AddProperty($String.prototype, "replace", function replace(search, replace) {
var subject = ToString(this);
// Delegate to one of the regular expression variants if necessary.
@@ -330,7 +333,7 @@
// ECMA-262 section 15.5.4.7
-%AddProperty($String.prototype, "indexOf", function(searchString /* position */) { // length == 1
+%AddProperty($String.prototype, "indexOf", function indexOf(searchString /* position */) { // length == 1
var subject_str = ToString(this);
var pattern_str = ToString(searchString);
var subject_str_len = subject_str.length;
@@ -348,7 +351,7 @@
// ECMA-262 section 15.5.4.8
-%AddProperty($String.prototype, "lastIndexOf", function(searchString /* position */) { // length == 1
+%AddProperty($String.prototype, "lastIndexOf", function lastIndexOf(searchString /* position */) { // length == 1
var sub = ToString(this);
var pat = ToString(searchString);
var index = (%_ArgumentsLength() > 1)
@@ -371,7 +374,7 @@
//
// This function is implementation specific. For now, we do not
// do anything locale specific.
-%AddProperty($String.prototype, "localeCompare", function(other) {
+%AddProperty($String.prototype, "localeCompare", function localeCompare(other) {
if (%_ArgumentsLength() === 0) return 0;
var this_str = ToString(this);
@@ -381,7 +384,7 @@
// ECMA-262 section 15.5.4.10
-%AddProperty($String.prototype, "match", function(regexp) {
+%AddProperty($String.prototype, "match", function match(regexp) {
if (!IS_REGEXP(regexp)) regexp = new ORIGINAL_REGEXP(regexp);
var subject = ToString(this);
@@ -404,7 +407,7 @@
// ECMA-262 section 15.5.4.12
-%AddProperty($String.prototype, "search", function(re) {
+%AddProperty($String.prototype, "search", function search(re) {
var regexp = new ORIGINAL_REGEXP(re);
var s = ToString(this);
var last_idx = regexp.lastIndex; // keep old lastIndex
@@ -419,7 +422,7 @@
// ECMA-262 section 15.5.4.13
-%AddProperty($String.prototype, "slice", function(start, end) {
+%AddProperty($String.prototype, "slice", function slice(start, end) {
var s = ToString(this);
var s_len = s.length;
var start_i = TO_INTEGER(start);
@@ -454,13 +457,13 @@
// ECMA-262 section 15.5.4.14
-%AddProperty($String.prototype, "split", function(separator, limit) {
+%AddProperty($String.prototype, "split", function split(separator, limit) {
var subject = ToString(this);
var result = [];
var lim = (limit === void 0) ? 0xffffffff : ToUint32(limit);
-
+
if (lim === 0) return result;
-
+
// ECMA-262 says that if separator is undefined, the result should
// be an array of size 1 containing the entire string. SpiderMonkey
// and KJS have this behaviour only when no separator is given. If
@@ -470,33 +473,33 @@
result[result.length] = subject;
return result;
}
-
+
var length = subject.length;
var currentIndex = 0;
var startIndex = 0;
-
+
var sep = IS_REGEXP(separator) ? separator : ToString(separator);
-
+
if (length === 0) {
if (splitMatch(sep, subject, 0, 0) != null) return result;
result[result.length] = subject;
return result;
}
-
+
while (true) {
if (startIndex === length) {
result[result.length] = subject.slice(currentIndex, length);
return result;
}
-
+
var match = splitMatch(sep, subject, currentIndex, startIndex);
-
+
if (IS_NULL(match)) {
result[result.length] = subject.slice(currentIndex, length);
return result;
}
-
+
var endIndex = match[0];
// We ignore a zero-length match at the currentIndex.
@@ -507,12 +510,12 @@
result[result.length] = match[1];
if (result.length === lim) return result;
-
+
for (var i = 2; i < match.length; i++) {
result[result.length] = match[i];
if (result.length === lim) return result;
}
-
+
startIndex = currentIndex = endIndex;
}
}, DONT_ENUM);
@@ -537,16 +540,16 @@
}
return result;
}
-
+
var separatorIndex = subject.indexOf(separator, start_index);
if (separatorIndex === -1) return null;
-
+
return [ separatorIndex + separator.length, subject.slice(current_index, separatorIndex) ];
};
// ECMA-262 section 15.5.4.15
-%AddProperty($String.prototype, "substring", function(start, end) {
+%AddProperty($String.prototype, "substring", function substring(start, end) {
var s = ToString(this);
var s_len = s.length;
var start_i = TO_INTEGER(start);
@@ -570,7 +573,7 @@
// This is not a part of ECMA-262.
-%AddProperty($String.prototype, "substr", function(start, n) {
+%AddProperty($String.prototype, "substr", function substr(start, n) {
var s = ToString(this);
var len;
@@ -608,27 +611,31 @@
// ECMA-262, 15.5.4.16
-%AddProperty($String.prototype, "toLowerCase", function() {
+%AddProperty($String.prototype, "toLowerCase", function toLowerCase() {
return %StringToLowerCase(ToString(this));
}, DONT_ENUM);
// ECMA-262, 15.5.4.17
-%AddProperty($String.prototype, "toLocaleLowerCase", $String.prototype.toLowerCase, DONT_ENUM);
+%AddProperty($String.prototype, "toLocaleLowerCase", function toLocaleLowerCase() {
+ return %StringToLowerCase(ToString(this));
+}, DONT_ENUM);
// ECMA-262, 15.5.4.18
-%AddProperty($String.prototype, "toUpperCase", function() {
+%AddProperty($String.prototype, "toUpperCase", function toUpperCase() {
return %StringToUpperCase(ToString(this));
}, DONT_ENUM);
// ECMA-262, 15.5.4.19
-%AddProperty($String.prototype, "toLocaleUpperCase", $String.prototype.toUpperCase, DONT_ENUM);
+%AddProperty($String.prototype, "toLocaleUpperCase", function toLocaleUpperCase() {
+ return %StringToUpperCase(ToString(this));
+}, DONT_ENUM);
// ECMA-262, section 15.5.3.2
-%AddProperty($String, "fromCharCode", function(code) {
+%AddProperty($String, "fromCharCode", function fromCharCode(code) {
var n = %_ArgumentsLength();
if (n == 1) return %CharFromCode(ToNumber(code) & 0xffff)
@@ -642,14 +649,14 @@
// ECMA-262, section 15.5.4.4
-function CharAt(pos) {
+function charAt(pos) {
var subject = ToString(this);
var index = TO_INTEGER(pos);
if (index >= subject.length || index < 0) return "";
return %CharFromCode(%StringCharCodeAt(subject, index));
};
-%AddProperty($String.prototype, "charAt", CharAt, DONT_ENUM);
+%AddProperty($String.prototype, "charAt", charAt, DONT_ENUM);
// Helper function for very basic XSS protection.
@@ -663,67 +670,67 @@
// Compatibility support for KJS.
// Tested by mozilla/js/tests/js1_5/Regress/regress-276103.js.
-%AddProperty($String.prototype, "link", function(link) {
- return "<a href=\"" + HtmlEscape(link) + "\">" + this + "</a>";
+%AddProperty($String.prototype, "link", function link(s) {
+ return "<a href=\"" + HtmlEscape(s) + "\">" + this + "</a>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "anchor", function(name) {
+%AddProperty($String.prototype, "anchor", function anchor(name) {
return "<a name=\"" + HtmlEscape(name) + "\">" + this + "</a>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "fontcolor", function(color) {
+%AddProperty($String.prototype, "fontcolor", function fontcolor(color) {
return "<font color=\"" + HtmlEscape(color) + "\">" + this + "</font>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "fontsize", function(size) {
+%AddProperty($String.prototype, "fontsize", function fontsize(size) {
return "<font size=\"" + HtmlEscape(size) + "\">" + this + "</font>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "big", function() {
+%AddProperty($String.prototype, "big", function big() {
return "<big>" + this + "</big>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "blink", function() {
+%AddProperty($String.prototype, "blink", function blink() {
return "<blink>" + this + "</blink>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "bold", function() {
+%AddProperty($String.prototype, "bold", function bold() {
return "<b>" + this + "</b>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "fixed", function() {
+%AddProperty($String.prototype, "fixed", function fixed() {
return "<tt>" + this + "</tt>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "italics", function() {
+%AddProperty($String.prototype, "italics", function italics() {
return "<i>" + this + "</i>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "small", function() {
+%AddProperty($String.prototype, "small", function small() {
return "<small>" + this + "</small>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "strike", function() {
+%AddProperty($String.prototype, "strike", function strike() {
return "<strike>" + this + "</strike>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "sub", function() {
+%AddProperty($String.prototype, "sub", function sub() {
return "<sub>" + this + "</sub>";
}, DONT_ENUM);
-%AddProperty($String.prototype, "sup", function() {
+%AddProperty($String.prototype, "sup", function sup() {
return "<sup>" + this + "</sup>";
}, DONT_ENUM);
« no previous file with comments | « src/runtime.js ('k') | src/uri.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698