private void SortPseudoOpCodes()
{
for (int i = 0; i < code.Count - 1; i++)
{
switch (code[i].pseudo)
{
case CodeType.LineNumber:
case CodeType.ReleaseTempLocal:
if (code[i + 1].opcode == OpCodes.Pop)
{
OpCodeWrapper temp = code[i];
code[i] = code[i + 1];
code[i + 1] = temp;
i--;
}
break;
case CodeType.BeginExceptionBlock:
if (code[i + 1].pseudo == CodeType.ReleaseTempLocal)
{
OpCodeWrapper temp = code[i];
code[i] = code[i + 1];
code[i + 1] = temp;
i--;
}
break;
case CodeType.Label:
if (code[i + 1].pseudo == CodeType.BeginExceptionBlock)
{
OpCodeWrapper temp = code[i];
code[i] = code[i + 1];
code[i + 1] = temp;
i--;
}
break;
}
}
}