diff options
| author | 2016-05-19 10:37:24 +0100 | |
|---|---|---|
| committer | 2016-05-19 18:12:22 +0100 | |
| commit | 3224838dfe9c95330ad963286f2c47e9546d3b5c (patch) | |
| tree | 50d1b8759c61d392ecc159ede7efab94ecbfcde8 /compiler/utils/x86/assembler_x86.cc | |
| parent | db9fcb30402a2726564905c206fa23ee86e146c3 (diff) | |
Clean up JNI calling convention callee saves.
Precalculate callee saves at compile time and return them
as ArrayRef<> instead of keeping then in a std::vector<>.
Change-Id: I4fd7d2bbf6138dc31b0fe8554eac35b0777ec9ef
Diffstat (limited to 'compiler/utils/x86/assembler_x86.cc')
| -rw-r--r-- | compiler/utils/x86/assembler_x86.cc | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc index 84cdb7d4d3..f931d75e77 100644 --- a/compiler/utils/x86/assembler_x86.cc +++ b/compiler/utils/x86/assembler_x86.cc @@ -1932,15 +1932,16 @@ static dwarf::Reg DWARFReg(Register reg) { constexpr size_t kFramePointerSize = 4; -void X86Assembler::BuildFrame(size_t frame_size, ManagedRegister method_reg, - const std::vector<ManagedRegister>& spill_regs, +void X86Assembler::BuildFrame(size_t frame_size, + ManagedRegister method_reg, + ArrayRef<const ManagedRegister> spill_regs, const ManagedRegisterEntrySpills& entry_spills) { DCHECK_EQ(buffer_.Size(), 0U); // Nothing emitted yet. cfi_.SetCurrentCFAOffset(4); // Return address on stack. CHECK_ALIGNED(frame_size, kStackAlignment); int gpr_count = 0; for (int i = spill_regs.size() - 1; i >= 0; --i) { - Register spill = spill_regs.at(i).AsX86().AsCpuRegister(); + Register spill = spill_regs[i].AsX86().AsCpuRegister(); pushl(spill); gpr_count++; cfi_.AdjustCFAOffset(kFramePointerSize); @@ -1974,7 +1975,7 @@ void X86Assembler::BuildFrame(size_t frame_size, ManagedRegister method_reg, } } -void X86Assembler::RemoveFrame(size_t frame_size, const std::vector<ManagedRegister>& spill_regs) { +void X86Assembler::RemoveFrame(size_t frame_size, ArrayRef<const ManagedRegister> spill_regs) { CHECK_ALIGNED(frame_size, kStackAlignment); cfi_.RememberState(); // -kFramePointerSize for ArtMethod*. @@ -1982,7 +1983,7 @@ void X86Assembler::RemoveFrame(size_t frame_size, const std::vector<ManagedRegis addl(ESP, Immediate(adjust)); cfi_.AdjustCFAOffset(-adjust); for (size_t i = 0; i < spill_regs.size(); ++i) { - Register spill = spill_regs.at(i).AsX86().AsCpuRegister(); + Register spill = spill_regs[i].AsX86().AsCpuRegister(); popl(spill); cfi_.AdjustCFAOffset(-static_cast<int>(kFramePointerSize)); cfi_.Restore(DWARFReg(spill)); |