Index: src/string.js |
diff --git a/src/string.js b/src/string.js |
index a70eeade83b9d68b51937611b621b628fa6be286..6f68ce089096db33a4e5c3f52a9a4ead7595400c 100644 |
--- a/src/string.js |
+++ b/src/string.js |
@@ -911,50 +911,47 @@ function ReplaceResultBuilder(str) { |
this.special_string = str; |
} |
-ReplaceResultBuilder.prototype.__proto__ = null; |
- |
- |
-ReplaceResultBuilder.prototype.add = function(str) { |
- str = TO_STRING_INLINE(str); |
- if (str.length > 0) this.elements.push(str); |
-} |
- |
- |
-ReplaceResultBuilder.prototype.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. |
+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; |
- elements.push(-len); |
- elements.push(start); |
+ return %StringBuilderConcat(elements, elements.length, this.special_string); |
} |
-} |
- |
- |
-ReplaceResultBuilder.prototype.generate = function() { |
- var elements = this.elements; |
- return %StringBuilderConcat(elements, elements.length, this.special_string); |
-} |
+)); |
// ------------------------------------------------------------------- |
-function SetupString() { |
- // Setup the constructor property on the String prototype object. |
+function SetUpString() { |
+ %CheckIsBootstrapping(); |
+ // Set up the constructor property on the String prototype object. |
%SetProperty($String.prototype, "constructor", $String, DONT_ENUM); |
- // Setup the non-enumerable functions on the String object. |
+ // Set up the non-enumerable functions on the String object. |
InstallFunctions($String, DONT_ENUM, $Array( |
"fromCharCode", StringFromCharCode |
)); |
- // Setup the non-enumerable functions on the String prototype object. |
+ // Set up the non-enumerable functions on the String prototype object. |
InstallFunctionsOnHiddenPrototype($String.prototype, DONT_ENUM, $Array( |
"valueOf", StringValueOf, |
"toString", StringToString, |
@@ -994,5 +991,4 @@ function SetupString() { |
)); |
} |
- |
-SetupString(); |
+SetUpString(); |