recompiler: Remove double check of timer done for branch when delay slot effects compare
This commit is contained in:
parent
55e4db8911
commit
3933cdef08
|
@ -449,7 +449,7 @@ void CCodeSection::GenerateSectionLinkage (void)
|
|||
JumpInfo[i]->LinkLocation2 = NULL;
|
||||
}
|
||||
}
|
||||
CompileExit (CompilePC(), JumpInfo[i]->TargetPC,JumpInfo[i]->RegSet,CExitInfo::Normal,true,NULL);
|
||||
CompileExit (JumpInfo[i]->JumpPC, JumpInfo[i]->TargetPC,JumpInfo[i]->RegSet,JumpInfo[i]->ExitReason,true,NULL);
|
||||
JumpInfo[i]->FallThrough = false;
|
||||
} else if (TargetSection[i] != NULL && JumpInfo[i] != NULL) {
|
||||
if (!JumpInfo[i]->FallThrough) { continue; }
|
||||
|
@ -462,7 +462,7 @@ void CCodeSection::GenerateSectionLinkage (void)
|
|||
JumpInfo[i]->LinkLocation2 = NULL;
|
||||
}
|
||||
}
|
||||
CompileExit (CompilePC(), JumpInfo[i]->TargetPC,JumpInfo[i]->RegSet,CExitInfo::Normal,true,NULL);
|
||||
CompileExit (JumpInfo[i]->JumpPC, JumpInfo[i]->TargetPC,JumpInfo[i]->RegSet,JumpInfo[i]->ExitReason,true,NULL);
|
||||
//FreeSection(TargetSection[i],Section);
|
||||
}
|
||||
}
|
||||
|
@ -586,7 +586,7 @@ void CCodeSection::GenerateSectionLinkage (void)
|
|||
SetJump32(JumpInfo[i]->LinkLocation2,(DWORD *)m_RecompPos);
|
||||
JumpInfo[i]->LinkLocation2 = NULL;
|
||||
}
|
||||
CompileExit (CompilePC(),JumpInfo[i]->TargetPC,JumpInfo[i]->RegSet,CExitInfo::Normal,true,NULL);
|
||||
CompileExit (JumpInfo[i]->JumpPC,JumpInfo[i]->TargetPC,JumpInfo[i]->RegSet,JumpInfo[i]->ExitReason,true,NULL);
|
||||
continue;
|
||||
}
|
||||
if (JumpInfo[i]->TargetPC != TargetSection[i]->m_EnterPC)
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
class CJumpInfo
|
||||
{
|
||||
typedef CExitInfo::EXIT_REASON EXIT_REASON;
|
||||
public:
|
||||
CJumpInfo();
|
||||
|
||||
|
@ -24,4 +25,5 @@ public:
|
|||
bool PermLoop;
|
||||
bool DoneDelaySlot; //maybe deletable
|
||||
CRegInfo RegSet;
|
||||
EXIT_REASON ExitReason;
|
||||
};
|
||||
|
|
|
@ -241,6 +241,8 @@ void CRecompilerOps::Compile_Branch (CRecompilerOps::BranchFunction CompareFunc,
|
|||
CPU_Message("CompileSystemCheck 12");
|
||||
CompileSystemCheck(FallInfo->TargetPC,m_Section->m_Jump.RegSet);
|
||||
ResetX86Protection();
|
||||
FallInfo->ExitReason = CExitInfo::Normal_NoSysCheck;
|
||||
FallInfo->JumpPC = (DWORD)-1;
|
||||
}
|
||||
} else {
|
||||
if (m_Section->m_ContinueSection != NULL) {
|
||||
|
|
|
@ -20,6 +20,7 @@ CJumpInfo::CJumpInfo()
|
|||
FallThrough = false;
|
||||
PermLoop = false;
|
||||
DoneDelaySlot = false;
|
||||
ExitReason = CExitInfo::Normal;
|
||||
}
|
||||
|
||||
#ifdef tofix
|
||||
|
|
Loading…
Reference in New Issue