| Index: src/runtime.js
|
| ===================================================================
|
| --- src/runtime.js (revision 4624)
|
| +++ src/runtime.js (working copy)
|
| @@ -80,12 +80,9 @@
|
| } else {
|
| // x is not a number, boolean, null or undefined.
|
| if (y == null) return 1; // not equal
|
| - if (IS_OBJECT(y)) {
|
| + if (IS_SPEC_OBJECT_OR_NULL(y)) {
|
| return %_ObjectEquals(x, y) ? 0 : 1;
|
| }
|
| - if (IS_FUNCTION(y)) {
|
| - return %_ObjectEquals(x, y) ? 0 : 1;
|
| - }
|
|
|
| x = %ToPrimitive(x, NO_HINT);
|
| }
|
| @@ -344,7 +341,7 @@
|
|
|
| // ECMA-262, section 11.8.7, page 54.
|
| function IN(x) {
|
| - if (x == null || (!IS_OBJECT(x) && !IS_FUNCTION(x))) {
|
| + if (x == null || !IS_SPEC_OBJECT_OR_NULL(x)) {
|
| throw %MakeTypeError('invalid_in_operator_use', [this, x]);
|
| }
|
| return %_IsNonNegativeSmi(this) ? %HasElement(x, this) : %HasProperty(x, %ToString(this));
|
| @@ -362,13 +359,13 @@
|
| }
|
|
|
| // If V is not an object, return false.
|
| - if (IS_NULL(V) || (!IS_OBJECT(V) && !IS_FUNCTION(V))) {
|
| + if (IS_NULL(V) || !IS_SPEC_OBJECT_OR_NULL(V)) {
|
| return 1;
|
| }
|
|
|
| // Get the prototype of F; if it is not an object, throw an error.
|
| var O = F.prototype;
|
| - if (IS_NULL(O) || (!IS_OBJECT(O) && !IS_FUNCTION(O))) {
|
| + if (IS_NULL(O) || !IS_SPEC_OBJECT_OR_NULL(O)) {
|
| throw %MakeTypeError('instanceof_nonobject_proto', [O]);
|
| }
|
|
|
| @@ -482,7 +479,7 @@
|
| // Fast case check.
|
| if (IS_STRING(x)) return x;
|
| // Normal behavior.
|
| - if (!IS_OBJECT(x) && !IS_FUNCTION(x)) return x;
|
| + if (!IS_SPEC_OBJECT_OR_NULL(x)) return x;
|
| if (x == null) return x; // check for null, undefined
|
| if (hint == NO_HINT) hint = (IS_DATE(x)) ? STRING_HINT : NUMBER_HINT;
|
| return (hint == NUMBER_HINT) ? %DefaultNumber(x) : %DefaultString(x);
|
| @@ -587,7 +584,7 @@
|
| // Returns if the given x is a primitive value - not an object or a
|
| // function.
|
| function IsPrimitive(x) {
|
| - if (!IS_OBJECT(x) && !IS_FUNCTION(x)) {
|
| + if (!IS_SPEC_OBJECT_OR_NULL(x)) {
|
| return true;
|
| } else {
|
| // Even though the type of null is "object", null is still
|
|
|