From bb490124458a49c4f6d8169ffa77e9d9570b1f0a Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 17 Jan 2017 20:29:40 -0500 Subject: [PATCH] IR: Deduplicate code in Reset and FoldFallbackToInterpreter --- Source/Core/Core/PowerPC/JitILCommon/IR.cpp | 25 +++++---------------- Source/Core/Core/PowerPC/JitILCommon/IR.h | 2 ++ 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/Source/Core/Core/PowerPC/JitILCommon/IR.cpp b/Source/Core/Core/PowerPC/JitILCommon/IR.cpp index 33484da69a..5c78ea883b 100644 --- a/Source/Core/Core/PowerPC/JitILCommon/IR.cpp +++ b/Source/Core/Core/PowerPC/JitILCommon/IR.cpp @@ -150,6 +150,11 @@ void IRBuilder::Reset() MarkUsed.clear(); MarkUsed.reserve(100000); + InvalidateCaches(); +} + +void IRBuilder::InvalidateCaches() +{ GRegCache = {}; GRegCacheStore = {}; @@ -1209,25 +1214,7 @@ InstLoc IRBuilder::FoldICmpCRUnsigned(InstLoc Op1, InstLoc Op2) InstLoc IRBuilder::FoldFallBackToInterpreter(InstLoc Op1, InstLoc Op2) { - for (unsigned i = 0; i < 32; i++) - { - GRegCache[i] = nullptr; - GRegCacheStore[i] = nullptr; - FRegCache[i] = nullptr; - FRegCacheStore[i] = nullptr; - } - - CarryCache = nullptr; - CarryCacheStore = nullptr; - - for (unsigned i = 0; i < 8; i++) - { - CRCache[i] = nullptr; - CRCacheStore[i] = nullptr; - } - - CTRCache = nullptr; - CTRCacheStore = nullptr; + InvalidateCaches(); return EmitBiOp(FallBackToInterpreter, Op1, Op2); } diff --git a/Source/Core/Core/PowerPC/JitILCommon/IR.h b/Source/Core/Core/PowerPC/JitILCommon/IR.h index 08ba3a79fc..cb1297f7e4 100644 --- a/Source/Core/Core/PowerPC/JitILCommon/IR.h +++ b/Source/Core/Core/PowerPC/JitILCommon/IR.h @@ -388,6 +388,8 @@ public: void WriteToFile(u64 codeHash); private: + void InvalidateCaches(); + InstLoc EmitZeroOp(unsigned Opcode, unsigned extra); InstLoc EmitUOp(unsigned OpCode, InstLoc Op1, unsigned extra = 0); InstLoc EmitBiOp(unsigned OpCode, InstLoc Op1, InstLoc Op2, unsigned extra = 0);