summaryrefslogtreecommitdiffstats
path: root/compiler/utils
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2015-01-12 18:21:37 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-01-12 18:21:37 +0000
commit6650de241f63f725830560ec09c5e1f13c0d8488 (patch)
tree6c4ec2cef8fd0caf45712191bcbc5d72ed0d318b /compiler/utils
parent13428670585d9a7f6b24273fb26c721c2ff6c551 (diff)
parent0f9b03c65e0ee8bdc5ddf58af100f5fc356cc98b (diff)
downloadart-6650de241f63f725830560ec09c5e1f13c0d8488.zip
art-6650de241f63f725830560ec09c5e1f13c0d8488.tar.gz
art-6650de241f63f725830560ec09c5e1f13c0d8488.tar.bz2
Merge "Revert "ART: Implement hard float for X86""
Diffstat (limited to 'compiler/utils')
-rw-r--r--compiler/utils/x86/assembler_x86.cc27
1 files changed, 6 insertions, 21 deletions
diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc
index d66d773..83584a2 100644
--- a/compiler/utils/x86/assembler_x86.cc
+++ b/compiler/utils/x86/assembler_x86.cc
@@ -1501,12 +1501,8 @@ void X86Assembler::BuildFrame(size_t frame_size, ManagedRegister method_reg,
uint32_t reg_offset = 1;
CHECK_ALIGNED(frame_size, kStackAlignment);
- int gpr_count = 0;
for (int i = spill_regs.size() - 1; i >= 0; --i) {
- x86::X86ManagedRegister spill = spill_regs.at(i).AsX86();
- DCHECK(spill.IsCpuRegister());
- pushl(spill.AsCpuRegister());
- gpr_count++;
+ pushl(spill_regs.at(i).AsX86().AsCpuRegister());
// DW_CFA_advance_loc
DW_CFA_advance_loc(&cfi_info_, buffer_.Size() - cfi_pc_);
@@ -1520,7 +1516,7 @@ void X86Assembler::BuildFrame(size_t frame_size, ManagedRegister method_reg,
}
// return address then method on stack
- int32_t adjust = frame_size - (gpr_count * kFramePointerSize) -
+ int32_t adjust = frame_size - (spill_regs.size() * kFramePointerSize) -
sizeof(StackReference<mirror::ArtMethod>) /*method*/ -
kFramePointerSize /*return address*/;
addl(ESP, Immediate(-adjust));
@@ -1540,18 +1536,9 @@ void X86Assembler::BuildFrame(size_t frame_size, ManagedRegister method_reg,
DW_CFA_def_cfa_offset(&cfi_info_, cfi_cfa_offset_);
for (size_t i = 0; i < entry_spills.size(); ++i) {
- ManagedRegisterSpill spill = entry_spills.at(i);
- if (spill.AsX86().IsCpuRegister()) {
- movl(Address(ESP, frame_size + spill.getSpillOffset()), spill.AsX86().AsCpuRegister());
- } else {
- DCHECK(spill.AsX86().IsXmmRegister());
- if (spill.getSize() == 8) {
- movsd(Address(ESP, frame_size + spill.getSpillOffset()), spill.AsX86().AsXmmRegister());
- } else {
- CHECK_EQ(spill.getSize(), 4);
- movss(Address(ESP, frame_size + spill.getSpillOffset()), spill.AsX86().AsXmmRegister());
- }
- }
+ movl(Address(ESP, frame_size + sizeof(StackReference<mirror::ArtMethod>) +
+ (i * kFramePointerSize)),
+ entry_spills.at(i).AsX86().AsCpuRegister());
}
}
@@ -1561,9 +1548,7 @@ void X86Assembler::RemoveFrame(size_t frame_size,
addl(ESP, Immediate(frame_size - (spill_regs.size() * kFramePointerSize) -
sizeof(StackReference<mirror::ArtMethod>)));
for (size_t i = 0; i < spill_regs.size(); ++i) {
- x86::X86ManagedRegister spill = spill_regs.at(i).AsX86();
- DCHECK(spill.IsCpuRegister());
- popl(spill.AsCpuRegister());
+ popl(spill_regs.at(i).AsX86().AsCpuRegister());
}
ret();
}