| Index: src/arm64/lithium-codegen-arm64.cc
|
| diff --git a/src/arm64/lithium-codegen-arm64.cc b/src/arm64/lithium-codegen-arm64.cc
|
| index 9eb7d7b83d2bdf26cab8f4a85550f3ee3b1e747a..abae911512cace247fdfd25a3f267048bc21e760 100644
|
| --- a/src/arm64/lithium-codegen-arm64.cc
|
| +++ b/src/arm64/lithium-codegen-arm64.cc
|
| @@ -5879,61 +5879,14 @@ void LCodeGen::DoWrapReceiver(LWrapReceiver* instr) {
|
| }
|
|
|
|
|
| -void LCodeGen::DoDeferredLoadMutableDouble(LLoadFieldByIndex* instr,
|
| - Register result,
|
| - Register object,
|
| - Register index) {
|
| - PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
| - __ Push(object);
|
| - __ Push(index);
|
| - __ Mov(cp, 0);
|
| - __ CallRuntimeSaveDoubles(Runtime::kLoadMutableDouble);
|
| - RecordSafepointWithRegisters(
|
| - instr->pointer_map(), 1, Safepoint::kNoLazyDeopt);
|
| - __ StoreToSafepointRegisterSlot(x0, result);
|
| -}
|
| -
|
| -
|
| void LCodeGen::DoLoadFieldByIndex(LLoadFieldByIndex* instr) {
|
| - class DeferredLoadMutableDouble V8_FINAL : public LDeferredCode {
|
| - public:
|
| - DeferredLoadMutableDouble(LCodeGen* codegen,
|
| - LLoadFieldByIndex* instr,
|
| - Register result,
|
| - Register object,
|
| - Register index)
|
| - : LDeferredCode(codegen),
|
| - instr_(instr),
|
| - result_(result),
|
| - object_(object),
|
| - index_(index) {
|
| - }
|
| - virtual void Generate() V8_OVERRIDE {
|
| - codegen()->DoDeferredLoadMutableDouble(instr_, result_, object_, index_);
|
| - }
|
| - virtual LInstruction* instr() V8_OVERRIDE { return instr_; }
|
| - private:
|
| - LLoadFieldByIndex* instr_;
|
| - Register result_;
|
| - Register object_;
|
| - Register index_;
|
| - };
|
| Register object = ToRegister(instr->object());
|
| Register index = ToRegister(instr->index());
|
| Register result = ToRegister(instr->result());
|
|
|
| __ AssertSmi(index);
|
|
|
| - DeferredLoadMutableDouble* deferred;
|
| - deferred = new(zone()) DeferredLoadMutableDouble(
|
| - this, instr, result, object, index);
|
| -
|
| Label out_of_object, done;
|
| -
|
| - __ TestAndBranchIfAnySet(
|
| - index, reinterpret_cast<uint64_t>(Smi::FromInt(1)), deferred->entry());
|
| - __ Mov(index, Operand(index, ASR, 1));
|
| -
|
| __ Cmp(index, Smi::FromInt(0));
|
| __ B(lt, &out_of_object);
|
|
|
| @@ -5949,7 +5902,6 @@ void LCodeGen::DoLoadFieldByIndex(LLoadFieldByIndex* instr) {
|
| __ Sub(result, result, Operand::UntagSmiAndScale(index, kPointerSizeLog2));
|
| __ Ldr(result, FieldMemOperand(result,
|
| FixedArray::kHeaderSize - kPointerSize));
|
| - __ Bind(deferred->exit());
|
| __ Bind(&done);
|
| }
|
|
|
|
|