Chromium Code Reviews| Index: src/x64/lithium-codegen-x64.cc |
| =================================================================== |
| --- src/x64/lithium-codegen-x64.cc (revision 7013) |
| +++ src/x64/lithium-codegen-x64.cc (working copy) |
| @@ -1632,7 +1632,17 @@ |
| void LCodeGen::DoHasCachedArrayIndex(LHasCachedArrayIndex* instr) { |
| - Abort("Unimplemented: %s", "DoHasCachedArrayIndex"); |
| + Register input = ToRegister(instr->InputAt(0)); |
| + Register result = ToRegister(instr->result()); |
| + |
| + ASSERT(instr->hydrogen()->value()->representation().IsTagged()); |
| + __ LoadRoot(result, Heap::kTrueValueRootIndex); |
| + __ testl(FieldOperand(input, String::kHashFieldOffset), |
| + Immediate(String::kContainsCachedArrayIndexMask)); |
|
Lasse Reichstein
2011/03/02 09:59:07
Indentation.
Rico
2011/03/02 10:12:15
Done.
|
| + NearLabel done; |
| + __ j(not_zero, &done); |
| + __ LoadRoot(result, Heap::kFalseValueRootIndex); |
|
Lasse Reichstein
2011/03/02 09:59:07
Could we do just one computed load from the root a
Rico
2011/03/02 10:12:15
As discussed offline this will not really have any
|
| + __ bind(&done); |
| } |