diff --git a/src/main/java/net/runelite/deob/attributes/code/Instruction.java b/src/main/java/net/runelite/deob/attributes/code/Instruction.java index d99a662f66..e55c40d6fb 100644 --- a/src/main/java/net/runelite/deob/attributes/code/Instruction.java +++ b/src/main/java/net/runelite/deob/attributes/code/Instruction.java @@ -104,6 +104,9 @@ public abstract class Instruction int index = ins.indexOf(this); ins.remove(this); ins.add(index, other); + + assert other.getInstructions() == this.instructions; + this.instructions = null; } public boolean removeStack() diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_0.java b/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_0.java index 406eb9c535..04ccac7e9f 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_0.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_0.java @@ -55,4 +55,10 @@ public class ALoad_0 extends Instruction implements LVTInstruction { return new ALoad(this.getInstructions(), idx); } + + @Override + public Instruction makeGeneric() + { + return new ALoad(this.getInstructions(), 0); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_1.java b/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_1.java index ebdc649f2e..3f746bfdaa 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_1.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_1.java @@ -55,4 +55,10 @@ public class ALoad_1 extends Instruction implements LVTInstruction { return new ALoad(this.getInstructions(), idx); } + + @Override + public Instruction makeGeneric() + { + return new ALoad(this.getInstructions(), 1); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_2.java b/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_2.java index ad0cbec79d..84ffd5d993 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_2.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_2.java @@ -55,4 +55,10 @@ public class ALoad_2 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new ALoad(this.getInstructions(), 2); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_3.java b/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_3.java index 8cb670b462..5cb26e5096 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_3.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/ALoad_3.java @@ -55,4 +55,10 @@ public class ALoad_3 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new ALoad(this.getInstructions(), 3); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_0.java b/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_0.java index 35398c1d24..50239bfd36 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_0.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_0.java @@ -52,4 +52,10 @@ public class AStore_0 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new AStore(this.getInstructions(), 0); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_1.java b/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_1.java index d84cb9c720..956879243f 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_1.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_1.java @@ -52,4 +52,10 @@ public class AStore_1 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new AStore(this.getInstructions(), 1); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_2.java b/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_2.java index 64ac69d01a..23533bc926 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_2.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_2.java @@ -52,4 +52,10 @@ public class AStore_2 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new AStore(this.getInstructions(), 2); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_3.java b/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_3.java index 7c23783764..faf1e6b020 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_3.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/AStore_3.java @@ -52,4 +52,10 @@ public class AStore_3 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new AStore(this.getInstructions(), 3); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_0.java b/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_0.java index 3e68cf5794..1937d21826 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_0.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_0.java @@ -57,4 +57,10 @@ public class DLoad_0 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new DLoad(this.getInstructions(), 0); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_1.java b/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_1.java index 4bc4ac1456..af355a2591 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_1.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_1.java @@ -57,4 +57,10 @@ public class DLoad_1 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new DLoad(this.getInstructions(), 1); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_2.java b/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_2.java index edf3cf2030..7981e9325f 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_2.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_2.java @@ -57,4 +57,10 @@ public class DLoad_2 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new DLoad(this.getInstructions(), 2); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_3.java b/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_3.java index 5822e2e8c7..bc20a44070 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_3.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/DLoad_3.java @@ -57,4 +57,10 @@ public class DLoad_3 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new DLoad(this.getInstructions(), 3); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_0.java b/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_0.java index 3322e85d71..95c9857399 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_0.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_0.java @@ -52,4 +52,10 @@ public class DStore_0 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new DStore(this.getInstructions(), 0); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_1.java b/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_1.java index cdfde5640f..ff93e2aaa6 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_1.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_1.java @@ -52,4 +52,10 @@ public class DStore_1 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new DStore(this.getInstructions(), 1); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_2.java b/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_2.java index 3788b920ca..27cfe25492 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_2.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_2.java @@ -52,4 +52,10 @@ public class DStore_2 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new DStore(this.getInstructions(), 2); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_3.java b/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_3.java index 67d3bf2bec..ad48bc23b1 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_3.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/DStore_3.java @@ -52,4 +52,10 @@ public class DStore_3 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new DStore(this.getInstructions(), 3); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_0.java b/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_0.java index 7365e45f03..828111791b 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_0.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_0.java @@ -57,4 +57,10 @@ public class FLoad_0 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new FLoad(this.getInstructions(), 0); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_1.java b/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_1.java index be1203acc2..dd9a3d4e9c 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_1.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_1.java @@ -57,4 +57,10 @@ public class FLoad_1 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new FLoad(this.getInstructions(), 1); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_2.java b/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_2.java index 212a6182ad..e8f68909fa 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_2.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_2.java @@ -57,4 +57,10 @@ public class FLoad_2 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new FLoad(this.getInstructions(), 2); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_3.java b/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_3.java index 48fc451ae6..a4b296d0ef 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_3.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/FLoad_3.java @@ -57,4 +57,10 @@ public class FLoad_3 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new FLoad(this.getInstructions(), 3); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_0.java b/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_0.java index a3dab0aa92..51c486eea1 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_0.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_0.java @@ -52,4 +52,10 @@ public class FStore_0 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new FStore(this.getInstructions(), 0); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_1.java b/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_1.java index 98d60c641a..e8eeaa9df8 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_1.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_1.java @@ -52,4 +52,10 @@ public class FStore_1 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new FStore(this.getInstructions(), 1); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_2.java b/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_2.java index d5523c228b..5643a621ec 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_2.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_2.java @@ -52,4 +52,10 @@ public class FStore_2 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new FStore(this.getInstructions(), 2); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_3.java b/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_3.java index 7bc1cf4360..5e1b5c13b4 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_3.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/FStore_3.java @@ -52,4 +52,10 @@ public class FStore_3 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new FStore(this.getInstructions(), 3); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_0.java b/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_0.java index 00ebd45b4e..d90cceb755 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_0.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_0.java @@ -57,4 +57,10 @@ public class ILoad_0 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new ILoad(this.getInstructions(), 0); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_1.java b/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_1.java index 984d5f3fc3..a1517c795f 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_1.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_1.java @@ -57,4 +57,10 @@ public class ILoad_1 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new ILoad(this.getInstructions(), 1); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_2.java b/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_2.java index 88af131853..81541b70f6 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_2.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_2.java @@ -57,4 +57,10 @@ public class ILoad_2 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new ILoad(this.getInstructions(), 2); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_3.java b/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_3.java index ff8150c0db..6bde3ce278 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_3.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/ILoad_3.java @@ -57,4 +57,10 @@ public class ILoad_3 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new ILoad(this.getInstructions(), 3); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_0.java b/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_0.java index 7bb7db6de1..796eb0d53f 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_0.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_0.java @@ -59,4 +59,10 @@ public class IStore_0 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new IStore(this.getInstructions(), 0); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_1.java b/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_1.java index 5ec09ec4c7..23b58b31f9 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_1.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_1.java @@ -59,4 +59,10 @@ public class IStore_1 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new IStore(this.getInstructions(), 1); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_2.java b/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_2.java index cb9fe29e77..944e74ba89 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_2.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_2.java @@ -59,4 +59,10 @@ public class IStore_2 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new IStore(this.getInstructions(), 2); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_3.java b/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_3.java index 5577669d07..a066e46ab6 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_3.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/IStore_3.java @@ -54,4 +54,10 @@ public class IStore_3 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new IStore(this.getInstructions(), 3); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_0.java b/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_0.java index 9ee9a60bcd..229fc1e369 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_0.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_0.java @@ -57,4 +57,10 @@ public class LLoad_0 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new LLoad(this.getInstructions(), 0); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_1.java b/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_1.java index 2a336f714c..e2d1bdd332 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_1.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_1.java @@ -57,4 +57,10 @@ public class LLoad_1 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new LLoad(this.getInstructions(), 1); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_2.java b/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_2.java index 412009f5b7..57680d11db 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_2.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_2.java @@ -57,4 +57,10 @@ public class LLoad_2 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new LLoad(this.getInstructions(), 2); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_3.java b/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_3.java index 45c64d698c..959d9c97b9 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_3.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/LLoad_3.java @@ -57,4 +57,10 @@ public class LLoad_3 extends Instruction implements LVTInstruction { return false; } + + @Override + public Instruction makeGeneric() + { + return new LLoad(this.getInstructions(), 3); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_0.java b/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_0.java index c8078a299e..f63f2620f0 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_0.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_0.java @@ -54,4 +54,10 @@ public class LStore_0 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new LStore(this.getInstructions(), 0); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_1.java b/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_1.java index 37abaf59e1..0f70ef7ee1 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_1.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_1.java @@ -54,4 +54,10 @@ public class LStore_1 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new LStore(this.getInstructions(), 1); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_2.java b/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_2.java index 943cd3adef..a336300840 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_2.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_2.java @@ -54,4 +54,10 @@ public class LStore_2 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new LStore(this.getInstructions(), 2); + } } diff --git a/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_3.java b/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_3.java index 67f80040c7..d49bcc9af2 100644 --- a/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_3.java +++ b/src/main/java/net/runelite/deob/attributes/code/instructions/LStore_3.java @@ -54,4 +54,10 @@ public class LStore_3 extends Instruction implements LVTInstruction { return true; } + + @Override + public Instruction makeGeneric() + { + return new LStore(this.getInstructions(), 3); + } } diff --git a/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java b/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java index b9f16af410..de239a3e13 100644 --- a/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java +++ b/src/main/java/net/runelite/deob/deobfuscators/UnusedParameters.java @@ -170,10 +170,6 @@ public class UnusedParameters implements Deobfuscator } } - int numArgs = signature.size(); - if (methods.size() > 1 || !methods.get(0).isStatic()) - ++numArgs; - for (Method method : methods) if (method.getCode() != null) // adjust lvt indexes to get rid of idx in the method @@ -186,15 +182,16 @@ public class UnusedParameters implements Deobfuscator int i = lins.getVariableIndex(); assert i != lvtIndex; // current unused variable detection just looks for no accesses - //if (i >= numArgs) - // continue; - // reassign if (i > lvtIndex) { + assert i > 0; + Instruction newIns = lins.setVariableIndex(--i); - if (newIns != ins) - ins.replace(newIns); + assert ins == newIns; + // this doesn't work because we'd have to reexecute or the above Frames would be messing with these instructions + //if (newIns != ins) + // ins.replace(newIns); } } } @@ -256,8 +253,6 @@ public class UnusedParameters implements Deobfuscator removeParameter(methods, signature, execution, unusedParameter, lvtIndexes[unusedParameter]); ++count; - - break; } } return new int[] { count }; @@ -279,7 +274,7 @@ public class UnusedParameters implements Deobfuscator i = checkParametersOnce(execution, group); count += i[0]; - break; + //break; } while (i[0] > 0);