Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index 6d17b0ec8e0f27c3407095e14a489dec9fd44960..b3c06d6778957c9152a6fe2bfa42737faeb5f419 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -6323,56 +6323,11 @@ void LCodeGen::DoCheckMapValue(LCheckMapValue* instr) { |
} |
-void LCodeGen::DoDeferredLoadMutableDouble(LLoadFieldByIndex* instr, |
- Register object, |
- Register index) { |
- PushSafepointRegistersScope scope(this); |
- __ push(object); |
- __ push(index); |
- __ xor_(esi, esi); |
- __ CallRuntimeSaveDoubles(Runtime::kLoadMutableDouble); |
- RecordSafepointWithRegisters( |
- instr->pointer_map(), 1, Safepoint::kNoLazyDeopt); |
- __ StoreToSafepointRegisterSlot(object, eax); |
-} |
- |
- |
void LCodeGen::DoLoadFieldByIndex(LLoadFieldByIndex* instr) { |
- class DeferredLoadMutableDouble V8_FINAL : public LDeferredCode { |
- public: |
- DeferredLoadMutableDouble(LCodeGen* codegen, |
- LLoadFieldByIndex* instr, |
- Register object, |
- Register index, |
- const X87Stack& x87_stack) |
- : LDeferredCode(codegen, x87_stack), |
- instr_(instr), |
- object_(object), |
- index_(index) { |
- } |
- virtual void Generate() V8_OVERRIDE { |
- codegen()->DoDeferredLoadMutableDouble(instr_, object_, index_); |
- } |
- virtual LInstruction* instr() V8_OVERRIDE { return instr_; } |
- private: |
- LLoadFieldByIndex* instr_; |
- Register object_; |
- Register index_; |
- }; |
- |
Register object = ToRegister(instr->object()); |
Register index = ToRegister(instr->index()); |
- DeferredLoadMutableDouble* deferred; |
- deferred = new(zone()) DeferredLoadMutableDouble( |
- this, instr, object, index, x87_stack_); |
- |
Label out_of_object, done; |
- __ test(index, Immediate(Smi::FromInt(1))); |
- __ j(not_zero, deferred->entry()); |
- |
- __ sar(index, 1); |
- |
__ cmp(index, Immediate(0)); |
__ j(less, &out_of_object, Label::kNear); |
__ mov(object, FieldOperand(object, |
@@ -6389,7 +6344,6 @@ void LCodeGen::DoLoadFieldByIndex(LLoadFieldByIndex* instr) { |
index, |
times_half_pointer_size, |
FixedArray::kHeaderSize - kPointerSize)); |
- __ bind(deferred->exit()); |
__ bind(&done); |
} |