Re-replace functions after loading a savestate.

Might need to clear before saving too... anyway, this makes testing a bit
easier for certain areas.

Also, correctly decrease downcount on x86.
This commit is contained in:
Unknown W. Brackets 2014-04-12 15:48:30 -07:00
parent d67f91d899
commit dde2f3ade6
4 changed files with 7 additions and 5 deletions

View File

@ -440,6 +440,10 @@ void __KernelModuleDoState(PointerWrap &p)
if (s >= 2) {
p.Do(loadedModules);
}
if (g_Config.bFuncHashMap) {
MIPSAnalyst::ReplaceFunctions();
}
}
void __KernelModuleShutdown()

View File

@ -375,8 +375,6 @@ skip:
return furthestJumpbackAddr;
}
void ReplaceFunctions();
void ScanForFunctions(u32 startAddr, u32 endAddr, bool insertSymbols) {
AnalyzedFunction currentFunction = {startAddr};

View File

@ -111,7 +111,7 @@ namespace MIPSAnalyst
void StoreHashMap(std::string filename = "");
const char *LookupHash(u64 hash, int funcSize);
void ReplaceFunctions(const ReplacementTableEntry *e, int numEntries);
void ReplaceFunctions();
void UpdateHashMap();
void ApplyHashMap();

View File

@ -491,8 +491,8 @@ void Jit::Comp_ReplacementFunc(MIPSOpcode op)
// we can emit.
MOV(32, R(ECX), M(&currentMIPS->r[MIPS_REG_RA]));
SUB(32, M(&currentMIPS->downcount - 1), R(EAX));
js.downcountAmount = 1; // we just subtracted most of it
SUB(32, M(&currentMIPS->downcount), R(EAX));
js.downcountAmount = 0; // we just subtracted most of it
WriteExitDestInReg(ECX);
js.compiling = false;