Index: src/arm/lithium-codegen-arm.cc |
=================================================================== |
--- src/arm/lithium-codegen-arm.cc (revision 6255) |
+++ src/arm/lithium-codegen-arm.cc (working copy) |
@@ -1636,36 +1636,19 @@ |
void LCodeGen::DoLoadKeyedFastElement(LLoadKeyedFastElement* instr) { |
Register elements = ToRegister(instr->elements()); |
Register key = EmitLoadRegister(instr->key(), scratch0()); |
- Register result; |
+ Register result = ToRegister(instr->result()); |
Register scratch = scratch0(); |
+ ASSERT(result.is(elements)); |
- if (instr->load_result() != NULL) { |
- result = ToRegister(instr->load_result()); |
- } else { |
- result = ToRegister(instr->result()); |
- ASSERT(result.is(elements)); |
- } |
- |
// Load the result. |
__ add(scratch, elements, Operand(key, LSL, kPointerSizeLog2)); |
__ ldr(result, FieldMemOperand(scratch, FixedArray::kHeaderSize)); |
- Representation r = instr->hydrogen()->representation(); |
- if (r.IsInteger32()) { |
- // Untag and check for smi. |
- __ SmiUntag(result); |
- DeoptimizeIf(cs, instr->environment()); |
- } else if (r.IsDouble()) { |
- EmitNumberUntagD(result, |
- ToDoubleRegister(instr->result()), |
- instr->environment()); |
- } else { |
- // Check for the hole value. |
- ASSERT(r.IsTagged()); |
- __ LoadRoot(scratch, Heap::kTheHoleValueRootIndex); |
- __ cmp(result, scratch); |
- DeoptimizeIf(eq, instr->environment()); |
- } |
+ // Check for the hole value. |
+ ASSERT(r.IsTagged()); |
+ __ LoadRoot(scratch, Heap::kTheHoleValueRootIndex); |
+ __ cmp(result, scratch); |
+ DeoptimizeIf(eq, instr->environment()); |
} |