Jit: Fix branch following.

The idea of this code was to not unroll loops, but it was completely broken.
So we've unrolled all loops, but only up to the second iteration.
Honestly, a better check would test if we branch to code which is already in the compiling block. But this is out of scope for now.

But testing shows that this unrolling actually improve the performance. So instead of fixing this bug, this check can be dropped.
This commit is contained in:
degasus 2018-07-28 08:18:05 +02:00
parent 7c2d2548a8
commit 5333c17cca

View File

@ -714,9 +714,7 @@ u32 PPCAnalyzer::Analyze(u32 address, CodeBlock* block, CodeBuffer* buffer, std:
if (inst.OPCD == 18 && block_size > 1)
{
// Always follow BX instructions.
// TODO: Loop unrolling might bloat the code size too much.
// Enable it carefully.
follow = destination != block->m_address;
follow = true;
destination = SignExt26(inst.LI << 2) + (inst.AA ? 0 : address);
if (inst.LK)
{