Chromium Code Reviews| Index: src/v8natives.js |
| diff --git a/src/v8natives.js b/src/v8natives.js |
| index d9dc09651e65d7654ef1ee2e9193dc8a2d47f38b..8481b67a246bdb2f8f819034720534ff19c94d7e 100644 |
| --- a/src/v8natives.js |
| +++ b/src/v8natives.js |
| @@ -61,7 +61,7 @@ function InstallFunctions(object, attributes, functions) { |
| } |
| -// Helper function to install a getter only property. |
| +// Helper function to install a getter-only accessor property. |
| function InstallGetter(object, name, getter) { |
| %FunctionSetName(getter, name); |
| %FunctionRemovePrototype(getter); |
| @@ -70,6 +70,12 @@ function InstallGetter(object, name, getter) { |
| } |
| +// Helper function to install a getter/setter accessor property/ |
|
rossberg
2013/04/03 13:42:23
Nit: / -> . at the end
Michael Starzinger
2013/04/04 09:48:02
Done.
|
| +function InstallGetterSetter(object, name, getter, setter) { |
|
rossberg
2013/04/03 13:42:23
Maybe cook up names that make clear that this func
Michael Starzinger
2013/04/04 09:48:02
Done. Oops, totally missed the boilerplate to adap
|
| + %DefineOrRedefineAccessorProperty(object, name, getter, setter, DONT_ENUM); |
| +} |
| + |
| + |
| // Prevents changes to the prototype of a built-in function. |
| // The "prototype" property of the function object is made non-configurable, |
| // and the prototype object is made non-extensible. The latter prevents |
| @@ -1326,6 +1332,18 @@ function ObjectIs(obj1, obj2) { |
| } |
| +// Harmony __proto__ getter. |
| +function ObjectGetProto() { |
| + return %GetPrototype(this); |
| +} |
| + |
| + |
| +// Harmony __proto__ setter. |
| +function ObjectSetProto(obj) { |
| + return %SetPrototype(this, obj); |
| +} |
| + |
| + |
| %SetCode($Object, function(x) { |
| if (%_IsConstructCall()) { |
| if (x == null) return this; |
| @@ -1336,14 +1354,16 @@ function ObjectIs(obj1, obj2) { |
| } |
| }); |
| -%SetExpectedNumberOfProperties($Object, 4); |
| // ---------------------------------------------------------------------------- |
| // Object |
| function SetUpObject() { |
| %CheckIsBootstrapping(); |
| - // Set Up non-enumerable functions on the Object.prototype object. |
| + |
| + %SetExpectedNumberOfProperties($Object, 4); |
| + |
| + // Set up non-enumerable functions on the Object.prototype object. |
| InstallFunctions($Object.prototype, DONT_ENUM, $Array( |
| "toString", ObjectToString, |
| "toLocaleString", ObjectToLocaleString, |
| @@ -1356,6 +1376,10 @@ function SetUpObject() { |
| "__defineSetter__", ObjectDefineSetter, |
| "__lookupSetter__", ObjectLookupSetter |
| )); |
| + InstallGetterSetter($Object.prototype, "__proto__", |
| + ObjectGetProto, ObjectSetProto); |
| + |
| + // Set up non-enumerable functions in the Object object. |
| InstallFunctions($Object, DONT_ENUM, $Array( |
| "keys", ObjectKeys, |
| "create", ObjectCreate, |