Index: src/ia32/codegen-ia32.cc |
=================================================================== |
--- src/ia32/codegen-ia32.cc (revision 4725) |
+++ src/ia32/codegen-ia32.cc (working copy) |
@@ -8598,16 +8598,16 @@ |
if (loop_nesting() > 0) { |
Comment cmnt(masm_, "[ Inlined load from keyed Property"); |
+ // Use a fresh temporary to load the elements without destroying |
+ // the receiver which is needed for the deferred slow case. |
+ Result elements = allocator()->Allocate(); |
+ ASSERT(elements.is_valid()); |
+ |
Result key = frame_->Pop(); |
Result receiver = frame_->Pop(); |
key.ToRegister(); |
receiver.ToRegister(); |
- // Use a fresh temporary to load the elements without destroying |
- // the receiver which is needed for the deferred slow case. |
- Result elements = allocator()->Allocate(); |
- ASSERT(elements.is_valid()); |
- |
// Use a fresh temporary for the index and later the loaded |
// value. |
result = allocator()->Allocate(); |
@@ -8621,6 +8621,7 @@ |
__ test(receiver.reg(), Immediate(kSmiTagMask)); |
deferred->Branch(zero); |
+ // Check that the receiver has the expected map. |
// Initially, use an invalid map. The map is patched in the IC |
// initialization code. |
__ bind(deferred->patch_site()); |
@@ -8654,7 +8655,6 @@ |
FieldOperand(elements.reg(), FixedArray::kLengthOffset)); |
deferred->Branch(above_equal); |
- // Load and check that the result is not the hole. |
__ mov(result.reg(), Operand(elements.reg(), |
result.reg(), |
times_4, |