ise fixes, grr

This commit is contained in:
Adam
2015-10-02 17:14:14 -04:00
parent 164b5fd5af
commit 3e6213ea52
2 changed files with 20 additions and 3 deletions

View File

@@ -79,6 +79,15 @@ public class Instructions
public void remove(Instruction ins)
{
for (Instruction i : instructions)
{
if (i instanceof JumpingInstruction)
{
JumpingInstruction j = (JumpingInstruction) i;
assert !j.getJumps().contains(ins);
}
}
ins.remove();
instructions.remove(ins);
}

View File

@@ -39,6 +39,7 @@ public class IllegalStateExceptions implements Deobfuscator
Instructions instructions = c.getInstructions();
instructions.clearBlockGraph();
instructions.buildJumpGraph();
List<Instruction> ilist = instructions.getInstructions();
for (int i = 0; i < ilist.size(); ++i)
@@ -109,7 +110,11 @@ public class IllegalStateExceptions implements Deobfuscator
instructions.remove(ins);
// insert goto
ilist.add(i, new Goto(instructions, to));
assert ilist.contains(to);
Goto g = new Goto(instructions, to);
g.jump.add(to);
to.from.add(g);
ilist.add(i, g);
++count;
break;
@@ -122,6 +127,7 @@ public class IllegalStateExceptions implements Deobfuscator
@Override
public void run(ClassGroup group)
{
group.buildClassGraph();
Execution execution = new Execution(group);
execution.populateInitialMethods();
execution.run();
@@ -133,6 +139,8 @@ public class IllegalStateExceptions implements Deobfuscator
{
i = checkOnce(execution, group);
System.out.println("ise removal pass " + passes + " removed " + i);
count += i;
++passes;
}