summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2014-09-27 18:33:48 -0400
committerLioncash <mathew1800@gmail.com>2014-09-27 18:33:48 -0400
commit8b578c7ba3e9cd1090ac14e4ef48ee2ee883d1dc (patch)
tree4e2cb752ecdf1d83585328312ec5e698854896ba /Source/Core
parent23e2301223460e23811048fe4aa576f169d0866e (diff)
DSPJitRegCache: Merge two loops in popRegs.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp15
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));