| Index: src/arm64/delayed-masm-arm64.cc
|
| diff --git a/src/arm64/delayed-masm-arm64.cc b/src/arm64/delayed-masm-arm64.cc
|
| deleted file mode 100644
|
| index e86f10262fd222df85ca30f0052f40e53dc77e9f..0000000000000000000000000000000000000000
|
| --- a/src/arm64/delayed-masm-arm64.cc
|
| +++ /dev/null
|
| @@ -1,197 +0,0 @@
|
| -// Copyright 2013 the V8 project authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#if V8_TARGET_ARCH_ARM64
|
| -
|
| -#include "src/arm64/delayed-masm-arm64.h"
|
| -#include "src/arm64/lithium-codegen-arm64.h"
|
| -
|
| -namespace v8 {
|
| -namespace internal {
|
| -
|
| -#define __ ACCESS_MASM(masm_)
|
| -
|
| -
|
| -void DelayedMasm::StackSlotMove(LOperand* src, LOperand* dst) {
|
| - DCHECK((src->IsStackSlot() && dst->IsStackSlot()) ||
|
| - (src->IsDoubleStackSlot() && dst->IsDoubleStackSlot()));
|
| - MemOperand src_operand = cgen_->ToMemOperand(src);
|
| - MemOperand dst_operand = cgen_->ToMemOperand(dst);
|
| - if (pending_ == kStackSlotMove) {
|
| - DCHECK(pending_pc_ == masm_->pc_offset());
|
| - UseScratchRegisterScope scope(masm_);
|
| - DoubleRegister temp1 = scope.AcquireD();
|
| - DoubleRegister temp2 = scope.AcquireD();
|
| - switch (MemOperand::AreConsistentForPair(pending_address_src_,
|
| - src_operand)) {
|
| - case MemOperand::kNotPair:
|
| - __ Ldr(temp1, pending_address_src_);
|
| - __ Ldr(temp2, src_operand);
|
| - break;
|
| - case MemOperand::kPairAB:
|
| - __ Ldp(temp1, temp2, pending_address_src_);
|
| - break;
|
| - case MemOperand::kPairBA:
|
| - __ Ldp(temp2, temp1, src_operand);
|
| - break;
|
| - }
|
| - switch (MemOperand::AreConsistentForPair(pending_address_dst_,
|
| - dst_operand)) {
|
| - case MemOperand::kNotPair:
|
| - __ Str(temp1, pending_address_dst_);
|
| - __ Str(temp2, dst_operand);
|
| - break;
|
| - case MemOperand::kPairAB:
|
| - __ Stp(temp1, temp2, pending_address_dst_);
|
| - break;
|
| - case MemOperand::kPairBA:
|
| - __ Stp(temp2, temp1, dst_operand);
|
| - break;
|
| - }
|
| - ResetPending();
|
| - return;
|
| - }
|
| -
|
| - EmitPending();
|
| - pending_ = kStackSlotMove;
|
| - pending_address_src_ = src_operand;
|
| - pending_address_dst_ = dst_operand;
|
| -#ifdef DEBUG
|
| - pending_pc_ = masm_->pc_offset();
|
| -#endif
|
| -}
|
| -
|
| -
|
| -void DelayedMasm::StoreConstant(uint64_t value, const MemOperand& operand) {
|
| - DCHECK(!scratch_register_acquired_);
|
| - if ((pending_ == kStoreConstant) && (value == pending_value_)) {
|
| - MemOperand::PairResult result =
|
| - MemOperand::AreConsistentForPair(pending_address_dst_, operand);
|
| - if (result != MemOperand::kNotPair) {
|
| - const MemOperand& dst =
|
| - (result == MemOperand::kPairAB) ?
|
| - pending_address_dst_ :
|
| - operand;
|
| - DCHECK(pending_pc_ == masm_->pc_offset());
|
| - if (pending_value_ == 0) {
|
| - __ Stp(xzr, xzr, dst);
|
| - } else {
|
| - SetSavedValue(pending_value_);
|
| - __ Stp(ScratchRegister(), ScratchRegister(), dst);
|
| - }
|
| - ResetPending();
|
| - return;
|
| - }
|
| - }
|
| -
|
| - EmitPending();
|
| - pending_ = kStoreConstant;
|
| - pending_address_dst_ = operand;
|
| - pending_value_ = value;
|
| -#ifdef DEBUG
|
| - pending_pc_ = masm_->pc_offset();
|
| -#endif
|
| -}
|
| -
|
| -
|
| -void DelayedMasm::Load(const CPURegister& rd, const MemOperand& operand) {
|
| - if ((pending_ == kLoad) &&
|
| - pending_register_.IsSameSizeAndType(rd)) {
|
| - switch (MemOperand::AreConsistentForPair(pending_address_src_, operand)) {
|
| - case MemOperand::kNotPair:
|
| - break;
|
| - case MemOperand::kPairAB:
|
| - DCHECK(pending_pc_ == masm_->pc_offset());
|
| - DCHECK(!IsScratchRegister(pending_register_) ||
|
| - scratch_register_acquired_);
|
| - DCHECK(!IsScratchRegister(rd) || scratch_register_acquired_);
|
| - __ Ldp(pending_register_, rd, pending_address_src_);
|
| - ResetPending();
|
| - return;
|
| - case MemOperand::kPairBA:
|
| - DCHECK(pending_pc_ == masm_->pc_offset());
|
| - DCHECK(!IsScratchRegister(pending_register_) ||
|
| - scratch_register_acquired_);
|
| - DCHECK(!IsScratchRegister(rd) || scratch_register_acquired_);
|
| - __ Ldp(rd, pending_register_, operand);
|
| - ResetPending();
|
| - return;
|
| - }
|
| - }
|
| -
|
| - EmitPending();
|
| - pending_ = kLoad;
|
| - pending_register_ = rd;
|
| - pending_address_src_ = operand;
|
| -#ifdef DEBUG
|
| - pending_pc_ = masm_->pc_offset();
|
| -#endif
|
| -}
|
| -
|
| -
|
| -void DelayedMasm::Store(const CPURegister& rd, const MemOperand& operand) {
|
| - if ((pending_ == kStore) &&
|
| - pending_register_.IsSameSizeAndType(rd)) {
|
| - switch (MemOperand::AreConsistentForPair(pending_address_dst_, operand)) {
|
| - case MemOperand::kNotPair:
|
| - break;
|
| - case MemOperand::kPairAB:
|
| - DCHECK(pending_pc_ == masm_->pc_offset());
|
| - __ Stp(pending_register_, rd, pending_address_dst_);
|
| - ResetPending();
|
| - return;
|
| - case MemOperand::kPairBA:
|
| - DCHECK(pending_pc_ == masm_->pc_offset());
|
| - __ Stp(rd, pending_register_, operand);
|
| - ResetPending();
|
| - return;
|
| - }
|
| - }
|
| -
|
| - EmitPending();
|
| - pending_ = kStore;
|
| - pending_register_ = rd;
|
| - pending_address_dst_ = operand;
|
| -#ifdef DEBUG
|
| - pending_pc_ = masm_->pc_offset();
|
| -#endif
|
| -}
|
| -
|
| -
|
| -void DelayedMasm::EmitPending() {
|
| - DCHECK((pending_ == kNone) || (pending_pc_ == masm_->pc_offset()));
|
| - switch (pending_) {
|
| - case kNone:
|
| - return;
|
| - case kStoreConstant:
|
| - if (pending_value_ == 0) {
|
| - __ Str(xzr, pending_address_dst_);
|
| - } else {
|
| - SetSavedValue(pending_value_);
|
| - __ Str(ScratchRegister(), pending_address_dst_);
|
| - }
|
| - break;
|
| - case kLoad:
|
| - DCHECK(!IsScratchRegister(pending_register_) ||
|
| - scratch_register_acquired_);
|
| - __ Ldr(pending_register_, pending_address_src_);
|
| - break;
|
| - case kStore:
|
| - __ Str(pending_register_, pending_address_dst_);
|
| - break;
|
| - case kStackSlotMove: {
|
| - UseScratchRegisterScope scope(masm_);
|
| - DoubleRegister temp = scope.AcquireD();
|
| - __ Ldr(temp, pending_address_src_);
|
| - __ Str(temp, pending_address_dst_);
|
| - break;
|
| - }
|
| - }
|
| - ResetPending();
|
| -}
|
| -
|
| -} // namespace internal
|
| -} // namespace v8
|
| -
|
| -#endif // V8_TARGET_ARCH_ARM64
|
|
|