| Index: src/v8natives.js
|
| ===================================================================
|
| --- src/v8natives.js (revision 4624)
|
| +++ src/v8natives.js (working copy)
|
| @@ -225,7 +225,7 @@
|
|
|
| // ECMA-262 - 15.2.4.6
|
| function ObjectIsPrototypeOf(V) {
|
| - if (!IS_OBJECT(V) && !IS_FUNCTION(V) && !IS_UNDETECTABLE(V)) return false;
|
| + if (!IS_SPEC_OBJECT_OR_NULL(V) && !IS_UNDETECTABLE(V)) return false;
|
| return %IsInPrototypeChain(this, V);
|
| }
|
|
|
| @@ -233,7 +233,7 @@
|
| // ECMA-262 - 15.2.4.6
|
| function ObjectPropertyIsEnumerable(V) {
|
| if (this == null) return false;
|
| - if (!IS_OBJECT(this) && !IS_FUNCTION(this)) return false;
|
| + if (!IS_SPEC_OBJECT_OR_NULL(this)) return false;
|
| return %IsPropertyEnumerable(this, ToString(V));
|
| }
|
|
|
| @@ -279,7 +279,7 @@
|
|
|
|
|
| function ObjectKeys(obj) {
|
| - if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
|
| + if ((!IS_SPEC_OBJECT_OR_NULL(obj) || IS_NULL_OR_UNDEFINED(obj)) &&
|
| !IS_UNDETECTABLE(obj))
|
| throw MakeTypeError("obj_ctor_property_non_object", ["keys"]);
|
| return %LocalKeys(obj);
|
| @@ -329,7 +329,7 @@
|
|
|
| // ES5 8.10.5.
|
| function ToPropertyDescriptor(obj) {
|
| - if (!IS_OBJECT(obj)) {
|
| + if (!IS_SPEC_OBJECT_OR_NULL(obj)) {
|
| throw MakeTypeError("property_desc_object", [obj]);
|
| }
|
| var desc = new PropertyDescriptor();
|
| @@ -599,7 +599,7 @@
|
|
|
| // ES5 section 15.2.3.2.
|
| function ObjectGetPrototypeOf(obj) {
|
| - if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
|
| + if ((!IS_SPEC_OBJECT_OR_NULL(obj) || IS_NULL_OR_UNDEFINED(obj)) &&
|
| !IS_UNDETECTABLE(obj))
|
| throw MakeTypeError("obj_ctor_property_non_object", ["getPrototypeOf"]);
|
| return obj.__proto__;
|
| @@ -608,7 +608,7 @@
|
|
|
| // ES5 section 15.2.3.3
|
| function ObjectGetOwnPropertyDescriptor(obj, p) {
|
| - if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
|
| + if ((!IS_SPEC_OBJECT_OR_NULL(obj) || IS_NULL_OR_UNDEFINED(obj)) &&
|
| !IS_UNDETECTABLE(obj))
|
| throw MakeTypeError("obj_ctor_property_non_object", ["getOwnPropertyDescriptor"]);
|
| var desc = GetOwnProperty(obj, p);
|
| @@ -618,7 +618,7 @@
|
|
|
| // ES5 section 15.2.3.4.
|
| function ObjectGetOwnPropertyNames(obj) {
|
| - if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
|
| + if ((!IS_SPEC_OBJECT_OR_NULL(obj) || IS_NULL_OR_UNDEFINED(obj)) &&
|
| !IS_UNDETECTABLE(obj))
|
| throw MakeTypeError("obj_ctor_property_non_object", ["getOwnPropertyNames"]);
|
|
|
| @@ -660,8 +660,7 @@
|
|
|
| // ES5 section 15.2.3.5.
|
| function ObjectCreate(proto, properties) {
|
| - // IS_OBJECT will return true on null covering that case.
|
| - if (!IS_OBJECT(proto) && !IS_FUNCTION(proto)) {
|
| + if (!IS_SPEC_OBJECT_OR_NULL(proto)) {
|
| throw MakeTypeError("proto_object_or_null", [proto]);
|
| }
|
| var obj = new $Object();
|
| @@ -673,7 +672,7 @@
|
|
|
| // ES5 section 15.2.3.6.
|
| function ObjectDefineProperty(obj, p, attributes) {
|
| - if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
|
| + if ((!IS_SPEC_OBJECT_OR_NULL(obj) || IS_NULL_OR_UNDEFINED(obj)) &&
|
| !IS_UNDETECTABLE(obj))
|
| throw MakeTypeError("obj_ctor_property_non_object", ["defineProperty"]);
|
| var name = ToString(p);
|
| @@ -685,7 +684,7 @@
|
|
|
| // ES5 section 15.2.3.7.
|
| function ObjectDefineProperties(obj, properties) {
|
| - if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
|
| + if ((!IS_SPEC_OBJECT_OR_NULL(obj) || IS_NULL_OR_UNDEFINED(obj)) &&
|
| !IS_UNDETECTABLE(obj))
|
| throw MakeTypeError("obj_ctor_property_non_object", ["defineProperties"]);
|
| var props = ToObject(properties);
|
|
|