Commit 3b5256b3 authored by ricow@chromium.org's avatar ricow@chromium.org

X64: implement DoHasCachedArrayIndex in lithium compiler.

Review URL: http://codereview.chromium.org/6596104

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7015 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 1703b8a3
...@@ -1632,7 +1632,17 @@ void LCodeGen::DoHasInstanceTypeAndBranch(LHasInstanceTypeAndBranch* instr) { ...@@ -1632,7 +1632,17 @@ void LCodeGen::DoHasInstanceTypeAndBranch(LHasInstanceTypeAndBranch* instr) {
void LCodeGen::DoHasCachedArrayIndex(LHasCachedArrayIndex* instr) { 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);
} }
......
...@@ -1531,8 +1531,9 @@ LInstruction* LChunkBuilder::DoGetCachedArrayIndex( ...@@ -1531,8 +1531,9 @@ LInstruction* LChunkBuilder::DoGetCachedArrayIndex(
LInstruction* LChunkBuilder::DoHasCachedArrayIndex( LInstruction* LChunkBuilder::DoHasCachedArrayIndex(
HHasCachedArrayIndex* instr) { HHasCachedArrayIndex* instr) {
Abort("Unimplemented: %s", "DoHasCachedArrayIndex"); ASSERT(instr->value()->representation().IsTagged());
return NULL; LOperand* value = UseRegister(instr->value());
return DefineAsRegister(new LHasCachedArrayIndex(value));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment