| Index: src/ia32/code-stubs-ia32.cc
 | 
| diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc
 | 
| index ac0b64525ac1a7cac410ada0bb2415eeed05f8ca..27ba99149bc4c7b9fae3870c3d91efdeffe0490c 100644
 | 
| --- a/src/ia32/code-stubs-ia32.cc
 | 
| +++ b/src/ia32/code-stubs-ia32.cc
 | 
| @@ -276,7 +276,7 @@ void ToBooleanStub::Generate(MacroAssembler* masm) {
 | 
|    __ j(not_zero, &false_result, Label::kNear);
 | 
|  
 | 
|    // JavaScript object => true.
 | 
| -  __ CmpInstanceType(edx, FIRST_JS_OBJECT_TYPE);
 | 
| +  __ CmpInstanceType(edx, FIRST_OBJECT_OR_FUNCTION_CLASS_TYPE);
 | 
|    __ j(above_equal, &true_result, Label::kNear);
 | 
|  
 | 
|    // String value => false iff empty.
 | 
| @@ -3655,7 +3655,7 @@ void CompareStub::Generate(MacroAssembler* masm) {
 | 
|        __ j(equal, &heap_number, Label::kNear);
 | 
|        if (cc_ != equal) {
 | 
|          // Call runtime on identical JSObjects.  Otherwise return equal.
 | 
| -        __ CmpObjectType(eax, FIRST_JS_OBJECT_TYPE, ecx);
 | 
| +        __ CmpObjectType(eax, FIRST_OBJECT_OR_FUNCTION_CLASS_TYPE, ecx);
 | 
|          __ j(above_equal, ¬_identical);
 | 
|        }
 | 
|        __ Set(eax, Immediate(Smi::FromInt(EQUAL)));
 | 
| @@ -3743,8 +3743,8 @@ void CompareStub::Generate(MacroAssembler* masm) {
 | 
|      // Get the type of the first operand.
 | 
|      // If the first object is a JS object, we have done pointer comparison.
 | 
|      Label first_non_object;
 | 
| -    STATIC_ASSERT(LAST_TYPE == JS_FUNCTION_TYPE);
 | 
| -    __ CmpObjectType(eax, FIRST_JS_OBJECT_TYPE, ecx);
 | 
| +    STATIC_ASSERT(LAST_TYPE == LAST_OBJECT_OR_FUNCTION_CLASS_TYPE);
 | 
| +    __ CmpObjectType(eax, FIRST_OBJECT_OR_FUNCTION_CLASS_TYPE, ecx);
 | 
|      __ j(below, &first_non_object, Label::kNear);
 | 
|  
 | 
|      // Return non-zero (eax is not zero)
 | 
| @@ -3758,7 +3758,7 @@ void CompareStub::Generate(MacroAssembler* masm) {
 | 
|      __ CmpInstanceType(ecx, ODDBALL_TYPE);
 | 
|      __ j(equal, &return_not_equal);
 | 
|  
 | 
| -    __ CmpObjectType(edx, FIRST_JS_OBJECT_TYPE, ecx);
 | 
| +    __ CmpObjectType(edx, FIRST_OBJECT_OR_FUNCTION_CLASS_TYPE, ecx);
 | 
|      __ j(above_equal, &return_not_equal);
 | 
|  
 | 
|      // Check for oddballs: true, false, null, undefined.
 | 
| @@ -3882,9 +3882,9 @@ void CompareStub::Generate(MacroAssembler* masm) {
 | 
|      __ lea(ecx, Operand(eax, edx, times_1, 0));
 | 
|      __ test(ecx, Immediate(kSmiTagMask));
 | 
|      __ j(not_zero, ¬_both_objects, Label::kNear);
 | 
| -    __ CmpObjectType(eax, FIRST_JS_OBJECT_TYPE, ecx);
 | 
| +    __ CmpObjectType(eax, FIRST_OBJECT_OR_FUNCTION_CLASS_TYPE, ecx);
 | 
|      __ j(below, ¬_both_objects, Label::kNear);
 | 
| -    __ CmpObjectType(edx, FIRST_JS_OBJECT_TYPE, ebx);
 | 
| +    __ CmpObjectType(edx, FIRST_OBJECT_OR_FUNCTION_CLASS_TYPE, ebx);
 | 
|      __ j(below, ¬_both_objects, Label::kNear);
 | 
|      // We do not bail out after this point.  Both are JSObjects, and
 | 
|      // they are equal if and only if both are undetectable.
 | 
| @@ -3963,7 +3963,7 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
 | 
|      __ j(zero, &receiver_is_value);
 | 
|  
 | 
|      // Check if the receiver is a valid JS object.
 | 
| -    __ CmpObjectType(eax, FIRST_JS_OBJECT_TYPE, edi);
 | 
| +    __ CmpObjectType(eax, FIRST_OBJECT_OR_FUNCTION_CLASS_TYPE, edi);
 | 
|      __ j(above_equal, &receiver_is_js_object);
 | 
|  
 | 
|      // Call the runtime to box the value.
 | 
| 
 |