| Index: src/v8natives.js
|
| diff --git a/src/v8natives.js b/src/v8natives.js
|
| index 1d05338016b908586ed59e1e91129bce0a2a4f4c..4f12eecfc8faf46ce36c3d881acf504be6b7726f 100644
|
| --- a/src/v8natives.js
|
| +++ b/src/v8natives.js
|
| @@ -28,7 +28,7 @@ function InstallFunctions(object, attributes, functions) {
|
| var f = functions[i + 1];
|
| %FunctionSetName(f, key);
|
| %FunctionRemovePrototype(f);
|
| - %SetProperty(object, key, f, attributes);
|
| + %AddProperty(object, key, f, attributes);
|
| %SetNativeFlag(f);
|
| }
|
| %ToFastProperties(object);
|
| @@ -39,7 +39,7 @@ function InstallFunctions(object, attributes, functions) {
|
| function InstallGetter(object, name, getter) {
|
| %FunctionSetName(getter, name);
|
| %FunctionRemovePrototype(getter);
|
| - %DefineOrRedefineAccessorProperty(object, name, getter, null, DONT_ENUM);
|
| + %DefineAccessorPropertyUnchecked(object, name, getter, null, DONT_ENUM);
|
| %SetNativeFlag(getter);
|
| }
|
|
|
| @@ -50,7 +50,7 @@ function InstallGetterSetter(object, name, getter, setter) {
|
| %FunctionSetName(setter, name);
|
| %FunctionRemovePrototype(getter);
|
| %FunctionRemovePrototype(setter);
|
| - %DefineOrRedefineAccessorProperty(object, name, getter, setter, DONT_ENUM);
|
| + %DefineAccessorPropertyUnchecked(object, name, getter, setter, DONT_ENUM);
|
| %SetNativeFlag(getter);
|
| %SetNativeFlag(setter);
|
| }
|
| @@ -65,7 +65,7 @@ function InstallConstants(object, constants) {
|
| for (var i = 0; i < constants.length; i += 2) {
|
| var name = constants[i];
|
| var k = constants[i + 1];
|
| - %SetProperty(object, name, k, attributes);
|
| + %AddProperty(object, name, k, attributes);
|
| }
|
| %ToFastProperties(object);
|
| }
|
| @@ -86,13 +86,13 @@ function SetUpLockedPrototype(constructor, fields, methods) {
|
| }
|
| if (fields) {
|
| for (var i = 0; i < fields.length; i++) {
|
| - %SetProperty(prototype, fields[i], UNDEFINED, DONT_ENUM | DONT_DELETE);
|
| + %AddProperty(prototype, fields[i], UNDEFINED, DONT_ENUM | DONT_DELETE);
|
| }
|
| }
|
| for (var i = 0; i < methods.length; i += 2) {
|
| var key = methods[i];
|
| var f = methods[i + 1];
|
| - %SetProperty(prototype, key, f, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
| + %AddProperty(prototype, key, f, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
| %SetNativeFlag(f);
|
| }
|
| %SetPrototype(prototype, null);
|
| @@ -190,13 +190,13 @@ function SetUpGlobal() {
|
| var attributes = DONT_ENUM | DONT_DELETE | READ_ONLY;
|
|
|
| // ECMA 262 - 15.1.1.1.
|
| - %SetProperty(global, "NaN", NAN, attributes);
|
| + %AddProperty(global, "NaN", NAN, attributes);
|
|
|
| // ECMA-262 - 15.1.1.2.
|
| - %SetProperty(global, "Infinity", INFINITY, attributes);
|
| + %AddProperty(global, "Infinity", INFINITY, attributes);
|
|
|
| // ECMA-262 - 15.1.1.3.
|
| - %SetProperty(global, "undefined", UNDEFINED, attributes);
|
| + %AddProperty(global, "undefined", UNDEFINED, attributes);
|
|
|
| // Set up non-enumerable function on the global object.
|
| InstallFunctions(global, DONT_ENUM, $Array(
|
| @@ -386,24 +386,22 @@ function FromGenericPropertyDescriptor(desc) {
|
| var obj = new $Object();
|
|
|
| if (desc.hasValue()) {
|
| - %IgnoreAttributesAndSetProperty(obj, "value", desc.getValue(), NONE);
|
| + %AddProperty(obj, "value", desc.getValue(), NONE);
|
| }
|
| if (desc.hasWritable()) {
|
| - %IgnoreAttributesAndSetProperty(obj, "writable", desc.isWritable(), NONE);
|
| + %AddProperty(obj, "writable", desc.isWritable(), NONE);
|
| }
|
| if (desc.hasGetter()) {
|
| - %IgnoreAttributesAndSetProperty(obj, "get", desc.getGet(), NONE);
|
| + %AddProperty(obj, "get", desc.getGet(), NONE);
|
| }
|
| if (desc.hasSetter()) {
|
| - %IgnoreAttributesAndSetProperty(obj, "set", desc.getSet(), NONE);
|
| + %AddProperty(obj, "set", desc.getSet(), NONE);
|
| }
|
| if (desc.hasEnumerable()) {
|
| - %IgnoreAttributesAndSetProperty(obj, "enumerable",
|
| - desc.isEnumerable(), NONE);
|
| + %AddProperty(obj, "enumerable", desc.isEnumerable(), NONE);
|
| }
|
| if (desc.hasConfigurable()) {
|
| - %IgnoreAttributesAndSetProperty(obj, "configurable",
|
| - desc.isConfigurable(), NONE);
|
| + %AddProperty(obj, "configurable", desc.isConfigurable(), NONE);
|
| }
|
| return obj;
|
| }
|
| @@ -833,7 +831,7 @@ function DefineObjectProperty(obj, p, desc, should_throw) {
|
| value = current.getValue();
|
| }
|
|
|
| - %DefineOrRedefineDataProperty(obj, p, value, flag);
|
| + %DefineDataPropertyUnchecked(obj, p, value, flag);
|
| } else {
|
| // There are 3 cases that lead here:
|
| // Step 4b - defining a new accessor property.
|
| @@ -843,7 +841,7 @@ function DefineObjectProperty(obj, p, desc, should_throw) {
|
| // descriptor.
|
| var getter = desc.hasGetter() ? desc.getGet() : null;
|
| var setter = desc.hasSetter() ? desc.getSet() : null;
|
| - %DefineOrRedefineAccessorProperty(obj, p, getter, setter, flag);
|
| + %DefineAccessorPropertyUnchecked(obj, p, getter, setter, flag);
|
| }
|
| return true;
|
| }
|
| @@ -901,7 +899,7 @@ function DefineArrayProperty(obj, p, desc, should_throw) {
|
| // Make sure the below call to DefineObjectProperty() doesn't overwrite
|
| // any magic "length" property by removing the value.
|
| // TODO(mstarzinger): This hack should be removed once we have addressed the
|
| - // respective TODO in Runtime_DefineOrRedefineDataProperty.
|
| + // respective TODO in Runtime_DefineDataPropertyUnchecked.
|
| // For the time being, we need a hack to prevent Object.observe from
|
| // generating two change records.
|
| obj.length = new_length;
|
| @@ -1397,7 +1395,7 @@ function SetUpObject() {
|
| %SetNativeFlag($Object);
|
| %SetCode($Object, ObjectConstructor);
|
|
|
| - %SetProperty($Object.prototype, "constructor", $Object, DONT_ENUM);
|
| + %AddProperty($Object.prototype, "constructor", $Object, DONT_ENUM);
|
|
|
| // Set up non-enumerable functions on the Object.prototype object.
|
| InstallFunctions($Object.prototype, DONT_ENUM, $Array(
|
| @@ -1484,7 +1482,7 @@ function SetUpBoolean () {
|
|
|
| %SetCode($Boolean, BooleanConstructor);
|
| %FunctionSetPrototype($Boolean, new $Boolean(false));
|
| - %SetProperty($Boolean.prototype, "constructor", $Boolean, DONT_ENUM);
|
| + %AddProperty($Boolean.prototype, "constructor", $Boolean, DONT_ENUM);
|
|
|
| InstallFunctions($Boolean.prototype, DONT_ENUM, $Array(
|
| "toString", BooleanToString,
|
| @@ -1667,7 +1665,7 @@ function SetUpNumber() {
|
|
|
| %OptimizeObjectForAddingMultipleProperties($Number.prototype, 8);
|
| // Set up the constructor property on the Number prototype object.
|
| - %SetProperty($Number.prototype, "constructor", $Number, DONT_ENUM);
|
| + %AddProperty($Number.prototype, "constructor", $Number, DONT_ENUM);
|
|
|
| InstallConstants($Number, $Array(
|
| // ECMA-262 section 15.7.3.1.
|
| @@ -1850,7 +1848,7 @@ function SetUpFunction() {
|
| %CheckIsBootstrapping();
|
|
|
| %SetCode($Function, FunctionConstructor);
|
| - %SetProperty($Function.prototype, "constructor", $Function, DONT_ENUM);
|
| + %AddProperty($Function.prototype, "constructor", $Function, DONT_ENUM);
|
|
|
| InstallFunctions($Function.prototype, DONT_ENUM, $Array(
|
| "bind", FunctionBind,
|
|
|