diff options
| author | Lioncash <mathew1800@gmail.com> | 2014-09-27 18:33:48 -0400 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2014-09-27 18:33:48 -0400 |
| commit | 8b578c7ba3e9cd1090ac14e4ef48ee2ee883d1dc (patch) | |
| tree | 4e2cb752ecdf1d83585328312ec5e698854896ba /Source/Core | |
| parent | 23e2301223460e23811048fe4aa576f169d0866e (diff) | |
DSPJitRegCache: Merge two loops in popRegs.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp b/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp index b071f9cad0..311c86f4f9 100644 --- a/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp +++ b/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp @@ -505,26 +505,21 @@ void DSPJitRegCache::pushRegs() void DSPJitRegCache::popRegs() { emitter.MOV(64, M(&ebp_store), R(RBP)); + int push_count = 0; - for (X64CachedReg& xreg : xregs) + for (int i = NUMXREGS - 1; i >= 0; i--) { - if (xreg.pushed) + if (xregs[i].pushed) { push_count++; - } - } - for (int i = NUMXREGS-1; i >= 0; i--) - { - if (xregs[i].pushed) - { - emitter.POP((X64Reg)i); + emitter.POP(static_cast<X64Reg>(i)); xregs[i].pushed = false; xregs[i].guest_reg = DSP_REG_USED; } } - //hardcoding alignment to 16 bytes + // hardcoding alignment to 16 bytes if (push_count & 1) { emitter.ADD(64,R(RSP),Imm32(8)); |
