| Index: src/full-codegen/x87/full-codegen-x87.cc | 
| diff --git a/src/full-codegen/x87/full-codegen-x87.cc b/src/full-codegen/x87/full-codegen-x87.cc | 
| index b8ac90660df9610c3f9f736346fd4fc4ece2188b..8e5e5a433d66f673d469b227388bedd38e980ca7 100644 | 
| --- a/src/full-codegen/x87/full-codegen-x87.cc | 
| +++ b/src/full-codegen/x87/full-codegen-x87.cc | 
| @@ -4891,27 +4891,27 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr, | 
| __ JumpIfSmi(eax, if_false); | 
| // Check for undetectable objects => true. | 
| __ mov(edx, FieldOperand(eax, HeapObject::kMapOffset)); | 
| -    __ movzx_b(ecx, FieldOperand(edx, Map::kBitFieldOffset)); | 
| -    __ test(ecx, Immediate(1 << Map::kIsUndetectable)); | 
| +    __ test_b(FieldOperand(edx, Map::kBitFieldOffset), | 
| +              1 << Map::kIsUndetectable); | 
| Split(not_zero, if_true, if_false, fall_through); | 
| } else if (String::Equals(check, factory->function_string())) { | 
| __ JumpIfSmi(eax, if_false); | 
| -    STATIC_ASSERT(NUM_OF_CALLABLE_SPEC_OBJECT_TYPES == 2); | 
| -    __ CmpObjectType(eax, JS_FUNCTION_TYPE, edx); | 
| -    __ j(equal, if_true); | 
| -    __ CmpInstanceType(edx, JS_FUNCTION_PROXY_TYPE); | 
| +    // Check for callable and not undetectable objects => true. | 
| +    __ mov(edx, FieldOperand(eax, HeapObject::kMapOffset)); | 
| +    __ movzx_b(ecx, FieldOperand(edx, Map::kBitFieldOffset)); | 
| +    __ and_(ecx, (1 << Map::kIsCallable) | (1 << Map::kIsUndetectable)); | 
| +    __ cmp(ecx, 1 << Map::kIsCallable); | 
| Split(equal, if_true, if_false, fall_through); | 
| } else if (String::Equals(check, factory->object_string())) { | 
| __ JumpIfSmi(eax, if_false); | 
| __ cmp(eax, isolate()->factory()->null_value()); | 
| __ j(equal, if_true); | 
| -    __ CmpObjectType(eax, FIRST_NONCALLABLE_SPEC_OBJECT_TYPE, edx); | 
| +    STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE); | 
| +    __ CmpObjectType(eax, FIRST_SPEC_OBJECT_TYPE, edx); | 
| __ j(below, if_false); | 
| -    __ CmpInstanceType(edx, LAST_NONCALLABLE_SPEC_OBJECT_TYPE); | 
| -    __ j(above, if_false); | 
| -    // Check for undetectable objects => false. | 
| +    // Check for callable or undetectable objects => false. | 
| __ test_b(FieldOperand(edx, Map::kBitFieldOffset), | 
| -              1 << Map::kIsUndetectable); | 
| +              (1 << Map::kIsCallable) | (1 << Map::kIsUndetectable)); | 
| Split(zero, if_true, if_false, fall_through); | 
| // clang-format off | 
| #define SIMD128_TYPE(TYPE, Type, type, lane_count, lane_type)   \ | 
|  |