Removed ReplaceResultBuilder.

Most of its code was dead, and the remaining part was a simple
one-liner, which is now inlined at its single call-site.

R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/17101021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15200 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 8f8461af
......@@ -495,8 +495,7 @@ function StringReplaceGlobalRegExpWithFunction(subject, regexp, replace) {
}
}
}
var resultBuilder = new ReplaceResultBuilder(subject, res);
var result = resultBuilder.generate();
var result = %StringBuilderConcat(res, res.length, subject);
resultArray.length = 0;
reusableReplaceArray = resultArray;
return result;
......@@ -950,43 +949,6 @@ function StringSup() {
return "<sup>" + this + "</sup>";
}
// ReplaceResultBuilder support.
function ReplaceResultBuilder(str) {
if (%_ArgumentsLength() > 1) {
this.elements = %_Arguments(1);
} else {
this.elements = new InternalArray();
}
this.special_string = str;
}
SetUpLockedPrototype(ReplaceResultBuilder,
$Array("elements", "special_string"), $Array(
"add", function(str) {
str = TO_STRING_INLINE(str);
if (str.length > 0) this.elements.push(str);
},
"addSpecialSlice", function(start, end) {
var len = end - start;
if (start < 0 || len <= 0) return;
if (start < 0x80000 && len < 0x800) {
this.elements.push((start << 11) | len);
} else {
// 0 < len <= String::kMaxLength and Smi::kMaxValue >= String::kMaxLength,
// so -len is a smi.
var elements = this.elements;
elements.push(-len);
elements.push(start);
}
},
"generate", function() {
var elements = this.elements;
return %StringBuilderConcat(elements, elements.length, this.special_string);
}
));
// -------------------------------------------------------------------
function SetUpString() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment