I need a better solution than having to edit the jumpgraph all the time

This commit is contained in:
Adam
2015-10-02 22:50:32 -04:00
parent 3e6213ea52
commit 1608d84b39
2 changed files with 18 additions and 11 deletions

View File

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

View File

@@ -203,8 +203,8 @@ public class MethodInliner implements Deobfuscator
fromI.jump.remove(invokeIns); fromI.jump.remove(invokeIns);
fromI.replace(invokeIns, firstParamStore); fromI.replace(invokeIns, firstParamStore);
fromI.jump.add(firstParamStore); fromI.jump.add(firstParamStore);
firstParamStore.from.add(fromI); firstParamStore.from.add(fromI);
} }
invokeIns.from.clear(); invokeIns.from.clear();
@@ -225,8 +225,14 @@ public class MethodInliner implements Deobfuscator
// instead of return, jump to next instruction after the invoke // instead of return, jump to next instruction after the invoke
Instruction oldI = i; Instruction oldI = i;
i = new Goto(methodInstructions, nextInstruction); i = new Goto(methodInstructions, nextInstruction);
assert methodInstructions.getInstructions().contains(nextInstruction);
i.jump.addAll(oldI.jump); assert oldI != nextInstruction;
i.jump.add(nextInstruction);
nextInstruction.from.add(i);
assert oldI.jump.isEmpty();
//i.jump.addAll(oldI.jump);
i.from.addAll(oldI.from); i.from.addAll(oldI.from);
for (Instruction i2 : oldI.from) for (Instruction i2 : oldI.from)
@@ -249,7 +255,8 @@ public class MethodInliner implements Deobfuscator
if (oldI != i) if (oldI != i)
{ {
i.jump.addAll(oldI.jump); assert oldI.jump.isEmpty();
//i.jump.addAll(oldI.jump);
i.from.addAll(oldI.from); i.from.addAll(oldI.from);
for (Instruction i2 : oldI.from) for (Instruction i2 : oldI.from)