| Index: src/v8natives.js
|
| ===================================================================
|
| --- src/v8natives.js (revision 423)
|
| +++ src/v8natives.js (working copy)
|
| @@ -41,15 +41,15 @@
|
|
|
|
|
| // ECMA 262 - 15.1.1.1.
|
| -%AddProperty(global, "NaN", $NaN, DONT_ENUM | DONT_DELETE);
|
| +%SetProperty(global, "NaN", $NaN, DONT_ENUM | DONT_DELETE);
|
|
|
|
|
| // ECMA-262 - 15.1.1.2.
|
| -%AddProperty(global, "Infinity", 1/0, DONT_ENUM | DONT_DELETE);
|
| +%SetProperty(global, "Infinity", 1/0, DONT_ENUM | DONT_DELETE);
|
|
|
|
|
| // ECMA-262 - 15.1.1.3.
|
| -%AddProperty(global, "undefined", void 0, DONT_ENUM | DONT_DELETE);
|
| +%SetProperty(global, "undefined", void 0, DONT_ENUM | DONT_DELETE);
|
|
|
|
|
| // ECMA 262 - 15.1.4
|
| @@ -57,18 +57,18 @@
|
| var n = ToNumber(number);
|
| return NUMBER_IS_NAN(n);
|
| }
|
| -%AddProperty(global, "isNaN", $isNaN, DONT_ENUM);
|
| +%SetProperty(global, "isNaN", $isNaN, DONT_ENUM);
|
|
|
|
|
| // ECMA 262 - 15.1.5
|
| function $isFinite(number) {
|
| return %NumberIsFinite(ToNumber(number));
|
| }
|
| -%AddProperty(global, "isFinite", $isFinite, DONT_ENUM);
|
| +%SetProperty(global, "isFinite", $isFinite, DONT_ENUM);
|
|
|
|
|
| // ECMA-262 - 15.1.2.2
|
| -%AddProperty(global, "parseInt", function(string, radix) {
|
| +%SetProperty(global, "parseInt", function(string, radix) {
|
| if (radix === void 0) {
|
| radix = 0;
|
| // Some people use parseInt instead of Math.floor. This
|
| @@ -93,7 +93,7 @@
|
|
|
|
|
| // ECMA-262 - 15.1.2.3
|
| -%AddProperty(global, "parseFloat", function(string) {
|
| +%SetProperty(global, "parseFloat", function(string) {
|
| return %StringParseFloat(ToString(string));
|
| }, DONT_ENUM);
|
|
|
| @@ -112,14 +112,14 @@
|
|
|
| %FunctionSetPrototype($Boolean, new $Boolean(false));
|
|
|
| -%AddProperty($Boolean.prototype, "constructor", $Boolean, DONT_ENUM);
|
| +%SetProperty($Boolean.prototype, "constructor", $Boolean, DONT_ENUM);
|
|
|
| // ----------------------------------------------------------------------------
|
| // Object
|
|
|
| $Object.prototype.constructor = $Object;
|
|
|
| -%AddProperty($Object.prototype, "toString", function() {
|
| +%SetProperty($Object.prototype, "toString", function() {
|
| var c = %ClassOf(this);
|
| // Hide Arguments from the outside.
|
| if (c === 'Arguments') c = 'Object';
|
| @@ -128,32 +128,32 @@
|
|
|
|
|
| // ECMA-262, section 15.2.4.3, page 84.
|
| -%AddProperty($Object.prototype, "toLocaleString", function() {
|
| +%SetProperty($Object.prototype, "toLocaleString", function() {
|
| return this.toString();
|
| }, DONT_ENUM);
|
|
|
|
|
| // ECMA-262, section 15.2.4.4, page 85.
|
| -%AddProperty($Object.prototype, "valueOf", function() {
|
| +%SetProperty($Object.prototype, "valueOf", function() {
|
| return this;
|
| }, DONT_ENUM);
|
|
|
|
|
| // ECMA-262, section 15.2.4.5, page 85.
|
| -%AddProperty($Object.prototype, "hasOwnProperty", function(V) {
|
| +%SetProperty($Object.prototype, "hasOwnProperty", function(V) {
|
| return %HasLocalProperty(ToObject(this), ToString(V));
|
| }, DONT_ENUM);
|
|
|
|
|
| // ECMA-262, section 15.2.4.6, page 85.
|
| -%AddProperty($Object.prototype, "isPrototypeOf", function(V) {
|
| +%SetProperty($Object.prototype, "isPrototypeOf", function(V) {
|
| if (!IS_OBJECT(V) && !IS_FUNCTION(V)) return false;
|
| return %IsInPrototypeChain(this, V);
|
| }, DONT_ENUM);
|
|
|
|
|
| // ECMA-262, section 15.2.4.6, page 85.
|
| -%AddProperty($Object.prototype, "propertyIsEnumerable", function(V) {
|
| +%SetProperty($Object.prototype, "propertyIsEnumerable", function(V) {
|
| if (this == null) return false;
|
| if (!IS_OBJECT(this) && !IS_FUNCTION(this)) return false;
|
| return %IsPropertyEnumerable(this, ToString(V));
|
| @@ -161,29 +161,43 @@
|
|
|
|
|
| // Extensions for providing property getters and setters.
|
| -%AddProperty($Object.prototype, "__defineGetter__", function(name, fun) {
|
| - if (this == null) throw new $TypeError('Object.prototype.__defineGetter__: this is Null');
|
| - if (!IS_FUNCTION(fun)) throw new $TypeError('Object.prototype.__defineGetter__: Expecting function');
|
| +%SetProperty($Object.prototype, "__defineGetter__", function(name, fun) {
|
| + if (this == null) {
|
| + throw new $TypeError('Object.prototype.__defineGetter__: this is Null');
|
| + }
|
| + if (!IS_FUNCTION(fun)) {
|
| + throw new $TypeError(
|
| + 'Object.prototype.__defineGetter__: Expecting function');
|
| + }
|
| return %DefineAccessor(ToObject(this), ToString(name), GETTER, fun);
|
| }, DONT_ENUM);
|
|
|
|
|
|
|
| -%AddProperty($Object.prototype, "__lookupGetter__", function(name) {
|
| - if (this == null) throw new $TypeError('Object.prototype.__lookupGetter__: this is Null');
|
| +%SetProperty($Object.prototype, "__lookupGetter__", function(name) {
|
| + if (this == null) {
|
| + throw new $TypeError('Object.prototype.__lookupGetter__: this is Null');
|
| + }
|
| return %LookupAccessor(ToObject(this), ToString(name), GETTER);
|
| }, DONT_ENUM);
|
|
|
|
|
| -%AddProperty($Object.prototype, "__defineSetter__", function(name, fun) {
|
| - if (this == null) throw new $TypeError('Object.prototype.__defineSetter__: this is Null');
|
| - if (!IS_FUNCTION(fun)) throw new $TypeError('Object.prototype.__defineSetter__: Expecting function');
|
| +%SetProperty($Object.prototype, "__defineSetter__", function(name, fun) {
|
| + if (this == null) {
|
| + throw new $TypeError('Object.prototype.__defineSetter__: this is Null');
|
| + }
|
| + if (!IS_FUNCTION(fun)) {
|
| + throw new $TypeError(
|
| + 'Object.prototype.__defineSetter__: Expecting function');
|
| + }
|
| return %DefineAccessor(ToObject(this), ToString(name), SETTER, fun);
|
| }, DONT_ENUM);
|
|
|
|
|
| -%AddProperty($Object.prototype, "__lookupSetter__", function(name) {
|
| - if (this == null) throw new $TypeError('Object.prototype.__lookupSetter__: this is Null');
|
| +%SetProperty($Object.prototype, "__lookupSetter__", function(name) {
|
| + if (this == null) {
|
| + throw new $TypeError('Object.prototype.__lookupSetter__: this is Null');
|
| + }
|
| return %LookupAccessor(ToObject(this), ToString(name), SETTER);
|
| }, DONT_ENUM);
|
|
|
| @@ -202,7 +216,7 @@
|
| // ----------------------------------------------------------------------------
|
| // Global stuff...
|
|
|
| -%AddProperty(global, "eval", function(x) {
|
| +%SetProperty(global, "eval", function(x) {
|
| if (!IS_STRING(x)) return x;
|
|
|
| var f = %CompileString(x, 0, true);
|
| @@ -213,7 +227,7 @@
|
|
|
|
|
| // execScript for IE compatibility.
|
| -%AddProperty(global, "execScript", function(expr, lang) {
|
| +%SetProperty(global, "execScript", function(expr, lang) {
|
| // NOTE: We don't care about the character casing.
|
| if (!lang || /javascript/i.test(lang)) {
|
| var f = %CompileString(ToString(expr), 0, false);
|
| @@ -226,7 +240,7 @@
|
| // ----------------------------------------------------------------------------
|
| // Boolean
|
|
|
| -%AddProperty($Boolean.prototype, "toString", function() {
|
| +%SetProperty($Boolean.prototype, "toString", function() {
|
| // NOTE: Both Boolean objects and values can enter here as
|
| // 'this'. This is not as dictated by ECMA-262.
|
| if (!IS_BOOLEAN(this) && %ClassOf(this) !== 'Boolean')
|
| @@ -235,7 +249,7 @@
|
| }, DONT_ENUM);
|
|
|
|
|
| -%AddProperty($Boolean.prototype, "valueOf", function() {
|
| +%SetProperty($Boolean.prototype, "valueOf", function() {
|
| // NOTE: Both Boolean objects and values can enter here as
|
| // 'this'. This is not as dictated by ECMA-262.
|
| if (!IS_BOOLEAN(this) && %ClassOf(this) !== 'Boolean')
|
| @@ -259,25 +273,34 @@
|
|
|
| %FunctionSetPrototype($Number, new $Number(0));
|
|
|
| -%AddProperty($Number.prototype, "constructor", $Number, DONT_ENUM);
|
| +%SetProperty($Number.prototype, "constructor", $Number, DONT_ENUM);
|
|
|
| // ECMA-262 section 15.7.3.1.
|
| -%AddProperty($Number, "MAX_VALUE", 1.7976931348623157e+308, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
| +%SetProperty($Number,
|
| + "MAX_VALUE",
|
| + 1.7976931348623157e+308,
|
| + DONT_ENUM | DONT_DELETE | READ_ONLY);
|
|
|
| // ECMA-262 section 15.7.3.2.
|
| -%AddProperty($Number, "MIN_VALUE", 5e-324, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
| +%SetProperty($Number, "MIN_VALUE", 5e-324, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
|
|
| // ECMA-262 section 15.7.3.3.
|
| -%AddProperty($Number, "NaN", $NaN, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
| +%SetProperty($Number, "NaN", $NaN, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
|
|
| // ECMA-262 section 15.7.3.4.
|
| -%AddProperty($Number, "NEGATIVE_INFINITY", -1/0, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
| +%SetProperty($Number,
|
| + "NEGATIVE_INFINITY",
|
| + -1/0,
|
| + DONT_ENUM | DONT_DELETE | READ_ONLY);
|
|
|
| // ECMA-262 section 15.7.3.5.
|
| -%AddProperty($Number, "POSITIVE_INFINITY", 1/0, DONT_ENUM | DONT_DELETE | READ_ONLY);
|
| +%SetProperty($Number,
|
| + "POSITIVE_INFINITY",
|
| + 1/0,
|
| + DONT_ENUM | DONT_DELETE | READ_ONLY);
|
|
|
| // ECMA-262 section 15.7.4.2.
|
| -%AddProperty($Number.prototype, "toString", function(radix) {
|
| +%SetProperty($Number.prototype, "toString", function(radix) {
|
| // NOTE: Both Number objects and values can enter here as
|
| // 'this'. This is not as dictated by ECMA-262.
|
| var number = this;
|
| @@ -303,13 +326,13 @@
|
|
|
|
|
| // ECMA-262 section 15.7.4.3
|
| -%AddProperty($Number.prototype, "toLocaleString", function() {
|
| +%SetProperty($Number.prototype, "toLocaleString", function() {
|
| return this.toString();
|
| }, DONT_ENUM);
|
|
|
|
|
| // ECMA-262 section 15.7.4.4
|
| -%AddProperty($Number.prototype, "valueOf", function() {
|
| +%SetProperty($Number.prototype, "valueOf", function() {
|
| // NOTE: Both Number objects and values can enter here as
|
| // 'this'. This is not as dictated by ECMA-262.
|
| if (!IS_NUMBER(this) && %ClassOf(this) !== 'Number')
|
| @@ -319,7 +342,7 @@
|
|
|
|
|
| // ECMA-262 section 15.7.4.5
|
| -%AddProperty($Number.prototype, "toFixed", function(fractionDigits) {
|
| +%SetProperty($Number.prototype, "toFixed", function(fractionDigits) {
|
| var f = TO_INTEGER(fractionDigits);
|
| if (f < 0 || f > 20) {
|
| throw new $RangeError("toFixed() digits argument must be between 0 and 20");
|
| @@ -330,7 +353,7 @@
|
|
|
|
|
| // ECMA-262 section 15.7.4.6
|
| -%AddProperty($Number.prototype, "toExponential", function(fractionDigits) {
|
| +%SetProperty($Number.prototype, "toExponential", function(fractionDigits) {
|
| var f = -1;
|
| if (!IS_UNDEFINED(fractionDigits)) {
|
| f = TO_INTEGER(fractionDigits);
|
| @@ -344,7 +367,7 @@
|
|
|
|
|
| // ECMA-262 section 15.7.4.7
|
| -%AddProperty($Number.prototype, "toPrecision", function(precision) {
|
| +%SetProperty($Number.prototype, "toPrecision", function(precision) {
|
| if (IS_UNDEFINED(precision)) return ToString(%_ValueOf(this));
|
| var p = TO_INTEGER(precision);
|
| if (p < 1 || p > 21) {
|
| @@ -389,7 +412,7 @@
|
| }
|
|
|
|
|
| -%AddProperty($Function.prototype, "toString", function() {
|
| +%SetProperty($Function.prototype, "toString", function() {
|
| return FunctionSourceString(this);
|
| }, DONT_ENUM);
|
|
|
|
|