Revision: 7015
Author: [email protected]
Date: Wed Mar 2 02:12:33 2011
Log: X64: implement DoHasCachedArrayIndex in lithium compiler.
Review URL: http://codereview.chromium.org/6596104
http://code.google.com/p/v8/source/detail?r=7015
Modified:
/branches/bleeding_edge/src/x64/lithium-codegen-x64.cc
/branches/bleeding_edge/src/x64/lithium-x64.cc
=======================================
--- /branches/bleeding_edge/src/x64/lithium-codegen-x64.cc Wed Mar 2
01:28:04 2011
+++ /branches/bleeding_edge/src/x64/lithium-codegen-x64.cc Wed Mar 2
02:12:33 2011
@@ -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));
+ NearLabel done;
+ __ j(not_zero, &done);
+ __ LoadRoot(result, Heap::kFalseValueRootIndex);
+ __ bind(&done);
}
=======================================
--- /branches/bleeding_edge/src/x64/lithium-x64.cc Tue Mar 1 23:52:14 2011
+++ /branches/bleeding_edge/src/x64/lithium-x64.cc Wed Mar 2 02:12:33 2011
@@ -1531,8 +1531,9 @@
LInstruction* LChunkBuilder::DoHasCachedArrayIndex(
HHasCachedArrayIndex* instr) {
- Abort("Unimplemented: %s", "DoHasCachedArrayIndex");
- return NULL;
+ ASSERT(instr->value()->representation().IsTagged());
+ LOperand* value = UseRegister(instr->value());
+ return DefineAsRegister(new LHasCachedArrayIndex(value));
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev