| Index: src/x87/lithium-codegen-x87.cc | 
| diff --git a/src/x87/lithium-codegen-x87.cc b/src/x87/lithium-codegen-x87.cc | 
| index bd2e0844081ea4dd078b7c360d115b91e4df3da2..dde28a6ce145396e75b17b948888bdbd171aa37e 100644 | 
| --- a/src/x87/lithium-codegen-x87.cc | 
| +++ b/src/x87/lithium-codegen-x87.cc | 
| @@ -6029,24 +6029,24 @@ Condition LCodeGen::EmitTypeofIs(LTypeofIsAndBranch* instr, Register input) { | 
| final_branch_condition = not_zero; | 
|  | 
| } else if (String::Equals(type_name, factory()->function_string())) { | 
| -    STATIC_ASSERT(NUM_OF_CALLABLE_SPEC_OBJECT_TYPES == 2); | 
| __ JumpIfSmi(input, false_label, false_distance); | 
| -    __ CmpObjectType(input, JS_FUNCTION_TYPE, input); | 
| -    __ j(equal, true_label, true_distance); | 
| -    __ CmpInstanceType(input, JS_FUNCTION_PROXY_TYPE); | 
| +    // Check for callable and not undetectable objects => true. | 
| +    __ mov(input, FieldOperand(input, HeapObject::kMapOffset)); | 
| +    __ movzx_b(input, FieldOperand(input, Map::kBitFieldOffset)); | 
| +    __ and_(input, (1 << Map::kIsCallable) | (1 << Map::kIsUndetectable)); | 
| +    __ cmp(input, 1 << Map::kIsCallable); | 
| final_branch_condition = equal; | 
|  | 
| } else if (String::Equals(type_name, factory()->object_string())) { | 
| __ JumpIfSmi(input, false_label, false_distance); | 
| __ cmp(input, factory()->null_value()); | 
| __ j(equal, true_label, true_distance); | 
| -    __ CmpObjectType(input, FIRST_NONCALLABLE_SPEC_OBJECT_TYPE, input); | 
| +    STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE); | 
| +    __ CmpObjectType(input, FIRST_SPEC_OBJECT_TYPE, input); | 
| __ j(below, false_label, false_distance); | 
| -    __ CmpInstanceType(input, LAST_NONCALLABLE_SPEC_OBJECT_TYPE); | 
| -    __ j(above, false_label, false_distance); | 
| -    // Check for undetectable objects => false. | 
| +    // Check for callable or undetectable objects => false. | 
| __ test_b(FieldOperand(input, Map::kBitFieldOffset), | 
| -              1 << Map::kIsUndetectable); | 
| +              (1 << Map::kIsCallable) | (1 << Map::kIsUndetectable)); | 
| final_branch_condition = zero; | 
|  | 
| // clang-format off | 
|  |