Index: src/array.js |
diff --git a/src/array.js b/src/array.js |
index 281c507f5a6d6e83b4dd196e3170a0538950fa33..32a370fda862f81c293b3b39f6a075438ae96ec5 100644 |
--- a/src/array.js |
+++ b/src/array.js |
@@ -1314,12 +1314,13 @@ function ArrayIsArray(obj) { |
// ------------------------------------------------------------------- |
-function SetupArray() { |
- // Setup non-enumerable constructor property on the Array.prototype |
+function SetUpArray() { |
+ %CheckIsBootstrapping(); |
+ // Set up non-enumerable constructor property on the Array.prototype |
// object. |
%SetProperty($Array.prototype, "constructor", $Array, DONT_ENUM); |
- // Setup non-enumerable functions on the Array object. |
+ // Set up non-enumerable functions on the Array object. |
InstallFunctions($Array, DONT_ENUM, $Array( |
"isArray", ArrayIsArray |
)); |
@@ -1337,7 +1338,7 @@ function SetupArray() { |
return f; |
} |
- // Setup non-enumerable functions of the Array.prototype object and |
+ // Set up non-enumerable functions of the Array.prototype object and |
// set their names. |
// Manipulate the length of some of the functions to meet |
// expectations set by ECMA-262 or Mozilla. |
@@ -1368,19 +1369,13 @@ function SetupArray() { |
%FinishArrayPrototypeSetup($Array.prototype); |
// The internal Array prototype doesn't need to be fancy, since it's never |
- // exposed to user code, so no hidden prototypes or DONT_ENUM attributes |
- // are necessary. |
- // The null __proto__ ensures that we never inherit any user created |
- // getters or setters from, e.g., Object.prototype. |
- InternalArray.prototype.__proto__ = null; |
- // Adding only the functions that are actually used, and a toString. |
- InternalArray.prototype.join = getFunction("join", ArrayJoin); |
- InternalArray.prototype.pop = getFunction("pop", ArrayPop); |
- InternalArray.prototype.push = getFunction("push", ArrayPush); |
- InternalArray.prototype.toString = function() { |
- return "Internal Array, length " + this.length; |
- }; |
+ // exposed to user code. |
+ // Adding only the functions that are actually used. |
+ SetUpLockedPrototype(InternalArray, $Array(), $Array( |
+ "join", getFunction("join", ArrayJoin), |
+ "pop", getFunction("pop", ArrayPop), |
+ "push", getFunction("push", ArrayPush) |
+ )); |
} |
- |
-SetupArray(); |
+SetUpArray(); |