Index: src/x64/lithium-codegen-x64.cc |
=================================================================== |
--- src/x64/lithium-codegen-x64.cc (revision 10366) |
+++ src/x64/lithium-codegen-x64.cc (working copy) |
@@ -1755,13 +1755,17 @@ |
// Branches to a label or falls through with the answer in the z flag. |
-// Trashes the temp register and possibly input (if it and temp are aliased). |
+// Trashes the temp register. |
void LCodeGen::EmitClassOfTest(Label* is_true, |
Label* is_false, |
Handle<String> class_name, |
Register input, |
Register temp, |
- Register scratch) { |
+ Register temp2) { |
+ ASSERT(!input.is(temp)); |
+ ASSERT(!input.is(temp2)); |
+ ASSERT(!temp.is(temp2)); |
+ |
__ JumpIfSmi(input, is_false); |
if (class_name->IsEqualTo(CStrVector("Function"))) { |
@@ -1782,9 +1786,9 @@ |
// 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(scratch, FieldOperand(temp, Map::kInstanceTypeOffset)); |
- __ subb(scratch, Immediate(FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); |
- __ cmpb(scratch, |
+ __ 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))); |
__ j(above, is_false); |