Optimize placement of basic blocks
This commit is contained in:
parent
68f8628409
commit
1be469aa9b
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue