fix: adjust insn reorder check in code shrink visitor (#695)

This commit is contained in:
Skylot
2019-07-07 14:18:21 +03:00
parent ed8c662631
commit 3eee83c2f2
4 changed files with 91 additions and 49 deletions
@@ -93,14 +93,21 @@ final class ArgsInfo {
movedSet.set(arg.getRegNum());
}
}
boolean canReorder = startInfo.insn.canReorder();
for (int i = start; i < to; i++) {
ArgsInfo argsInfo = argsList.get(i);
if (argsInfo.getInlinedInsn() == this) {
continue;
}
InsnNode curInsn = argsInfo.insn;
if (!curInsn.canReorder() || usedArgAssign(curInsn, movedSet)) {
return false;
if (canReorder) {
if (usedArgAssign(curInsn, movedSet)) {
return false;
}
} else {
if (!curInsn.canReorder() || usedArgAssign(curInsn, movedSet)) {
return false;
}
}
}
return true;