From 9829083241846b44ae430783fe36b3ae9ea75cea Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 25 Mar 2018 01:20:40 -0400 Subject: [PATCH] CachedInterpreter: Use an enum class for instruction type --- .../CachedInterpreter/CachedInterpreter.cpp | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp b/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp index f441a5b2b0..73159c15bb 100644 --- a/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp +++ b/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp @@ -20,29 +20,32 @@ struct CachedInterpreter::Instruction typedef void (*CommonCallback)(UGeckoInstruction); typedef bool (*ConditionalCallback)(u32 data); - Instruction() : type(INSTRUCTION_ABORT) {} + Instruction() {} Instruction(const CommonCallback c, UGeckoInstruction i) - : common_callback(c), data(i.hex), type(INSTRUCTION_TYPE_COMMON) + : common_callback(c), data(i.hex), type(Type::Common) { } Instruction(const ConditionalCallback c, u32 d) - : conditional_callback(c), data(d), type(INSTRUCTION_TYPE_CONDITIONAL) + : conditional_callback(c), data(d), type(Type::Conditional) { } + enum class Type + { + Abort, + Common, + Conditional, + }; + union { const CommonCallback common_callback; const ConditionalCallback conditional_callback; }; - u32 data; - enum - { - INSTRUCTION_ABORT, - INSTRUCTION_TYPE_COMMON, - INSTRUCTION_TYPE_CONDITIONAL, - } type; + + u32 data = 0; + Type type = Type::Abort; }; CachedInterpreter::CachedInterpreter() : code_buffer(32000) @@ -86,15 +89,15 @@ void CachedInterpreter::ExecuteOneBlock() const Instruction* code = reinterpret_cast(normal_entry); - for (; code->type != Instruction::INSTRUCTION_ABORT; ++code) + for (; code->type != Instruction::Type::Abort; ++code) { switch (code->type) { - case Instruction::INSTRUCTION_TYPE_COMMON: + case Instruction::Type::Common: code->common_callback(UGeckoInstruction(code->data)); break; - case Instruction::INSTRUCTION_TYPE_CONDITIONAL: + case Instruction::Type::Conditional: if (code->conditional_callback(code->data)) return; break;