Merge pull request #993 from phire/fix_getOpInfo

GetOpInfo: Assert on all invalid Ops.
This commit is contained in:
skidau 2014-09-06 19:50:15 +10:00
commit a8f724e7c2

View File

@ -41,25 +41,22 @@ GekkoOPInfo *GetOpInfo(UGeckoInstruction _inst)
int table = info->type>>24; int table = info->type>>24;
switch (table) switch (table)
{ {
case 4: return m_infoTable4[_inst.SUBOP10]; case 4: info = m_infoTable4[_inst.SUBOP10]; break;
case 19: return m_infoTable19[_inst.SUBOP10]; case 19: info = m_infoTable19[_inst.SUBOP10]; break;
case 31: return m_infoTable31[_inst.SUBOP10]; case 31: info = m_infoTable31[_inst.SUBOP10]; break;
case 59: return m_infoTable59[_inst.SUBOP5]; case 59: info = m_infoTable59[_inst.SUBOP5]; break;
case 63: return m_infoTable63[_inst.SUBOP10]; case 63: info = m_infoTable63[_inst.SUBOP10]; break;
default: default:
_assert_msg_(POWERPC,0,"GetOpInfo - invalid subtable op %08x @ %08x", _inst.hex, PC); _assert_msg_(POWERPC,0,"GetOpInfo - invalid subtable op %08x @ %08x", _inst.hex, PC);
return nullptr; return nullptr;
} }
} }
else if ((info->type & 0xFFFFFF) == OPTYPE_INVALID)
{ {
if ((info->type & 0xFFFFFF) == OPTYPE_INVALID) _assert_msg_(POWERPC,0,"GetOpInfo - invalid op %08x @ %08x", _inst.hex, PC);
{ return nullptr;
_assert_msg_(POWERPC,0,"GetOpInfo - invalid op %08x @ %08x", _inst.hex, PC);
return nullptr;
}
return m_infoTable[_inst.OPCD];
} }
return info;
} }
Interpreter::_interpreterInstruction GetInterpreterOp(UGeckoInstruction _inst) Interpreter::_interpreterInstruction GetInterpreterOp(UGeckoInstruction _inst)