Optimize placement of basic blocks

This commit is contained in:
drmortalwombat 2022-01-10 14:06:21 +01:00
parent 68f8628409
commit 1be469aa9b
2 changed files with 13 additions and 1 deletions

View File

@ -5806,11 +5806,16 @@ void ByteCodeBasicBlock::BuildPlacement(GrowingArray<ByteCodeBasicBlock*>& place
mTrueJump->BuildPlacement(placement); mTrueJump->BuildPlacement(placement);
mFalseJump->BuildPlacement(placement); mFalseJump->BuildPlacement(placement);
} }
else else if (mFalseJump->mCode.Size() < mTrueJump->mCode.Size())
{ {
mFalseJump->BuildPlacement(placement); mFalseJump->BuildPlacement(placement);
mTrueJump->BuildPlacement(placement); mTrueJump->BuildPlacement(placement);
} }
else
{
mTrueJump->BuildPlacement(placement);
mFalseJump->BuildPlacement(placement);
}
} }
else if (mTrueJump) else if (mTrueJump)
{ {

View File

@ -5733,6 +5733,13 @@ static bool CanBypassStore(const InterInstruction * sins, const InterInstruction
else else
return false; return false;
} }
else if (sm == IM_FRAME)
;
else if (sm == IM_FPARAM)
{
if (bi == si)
return false;
}
else if (sm == IM_INDIRECT && bm == IM_INDIRECT && st == bt) else if (sm == IM_INDIRECT && bm == IM_INDIRECT && st == bt)
{ {
return so + sz <= bz || bo + bz <= so; return so + sz <= bz || bo + bz <= so;