diff --git a/src/crankshaft/x87/lithium-codegen-x87.cc b/src/crankshaft/x87/lithium-codegen-x87.cc index d2c829398f..62690376f5 100644 --- a/src/crankshaft/x87/lithium-codegen-x87.cc +++ b/src/crankshaft/x87/lithium-codegen-x87.cc @@ -2520,11 +2520,12 @@ void LCodeGen::EmitClassOfTest(Label* is_true, DCHECK(!temp.is(temp2)); __ JumpIfSmi(input, is_false); - __ CmpObjectType(input, JS_FUNCTION_TYPE, temp); + __ CmpObjectType(input, FIRST_FUNCTION_TYPE, temp); + STATIC_ASSERT(LAST_FUNCTION_TYPE == LAST_TYPE); if (String::Equals(isolate()->factory()->Function_string(), class_name)) { - __ j(equal, is_true); + __ j(above_equal, is_true); } else { - __ j(equal, is_false); + __ j(above_equal, is_false); } // Now we are in the FIRST-LAST_NONCALLABLE_SPEC_OBJECT_TYPE range. diff --git a/src/full-codegen/x87/full-codegen-x87.cc b/src/full-codegen/x87/full-codegen-x87.cc index 753db70d54..c21a53ad3c 100644 --- a/src/full-codegen/x87/full-codegen-x87.cc +++ b/src/full-codegen/x87/full-codegen-x87.cc @@ -2715,9 +2715,10 @@ void FullCodeGenerator::EmitClassOf(CallRuntime* expr) { __ CmpObjectType(eax, FIRST_JS_RECEIVER_TYPE, eax); __ j(below, &null, Label::kNear); - // Return 'Function' for JSFunction objects. - __ CmpInstanceType(eax, JS_FUNCTION_TYPE); - __ j(equal, &function, Label::kNear); + // Return 'Function' for JSFunction and JSBoundFunction objects. + __ CmpInstanceType(eax, FIRST_FUNCTION_TYPE); + STATIC_ASSERT(LAST_FUNCTION_TYPE == LAST_TYPE); + __ j(above_equal, &function, Label::kNear); // Check if the constructor in the map is a JS function. __ GetMapConstructor(eax, eax, ebx);