| 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);
 | 
| 
 |