Index: src/x64/lithium-codegen-x64.cc |
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
index ff8aeefe2c73d4ed19bb5cc1417232ee3c14db2a..4129db69db5c5e405b3fee5741b7c9d207bd4657 100644 |
--- a/src/x64/lithium-codegen-x64.cc |
+++ b/src/x64/lithium-codegen-x64.cc |
@@ -1793,11 +1793,10 @@ void LCodeGen::EmitClassOfTest(Label* is_true, |
// Faster code path to avoid two compares: subtract lower bound from the |
// actual type and do a signed compare with the width of the type range. |
__ movq(temp, FieldOperand(input, HeapObject::kMapOffset)); |
- __ movq(temp2, FieldOperand(temp, Map::kInstanceTypeOffset)); |
- __ subb(temp2, Immediate(FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); |
- __ cmpb(temp2, |
- Immediate(static_cast<int8_t>(LAST_NONCALLABLE_SPEC_OBJECT_TYPE - |
- FIRST_NONCALLABLE_SPEC_OBJECT_TYPE))); |
+ __ movzxbl(temp2, FieldOperand(temp, Map::kInstanceTypeOffset)); |
+ __ subq(temp2, Immediate(FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); |
+ __ cmpq(temp2, Immediate(LAST_NONCALLABLE_SPEC_OBJECT_TYPE - |
+ FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); |
__ j(above, is_false); |
} |