Simplify DummyLocalTransformer

The obfuscated client only contains dummy locals of type int.
pull/48/head
Graham 5 years ago
parent 5e46c058cd
commit f426f16d72
  1. 37
      deob/src/main/java/dev/openrs2/deob/transform/DummyLocalTransformer.java

@ -1,6 +1,5 @@
package dev.openrs2.deob.transform;
import com.google.common.collect.ImmutableSet;
import dev.openrs2.asm.InsnNodeUtils;
import dev.openrs2.asm.classpath.ClassPath;
import dev.openrs2.asm.transform.Transformer;
@ -14,24 +13,6 @@ import org.slf4j.LoggerFactory;
public final class DummyLocalTransformer extends Transformer {
private static final Logger logger = LoggerFactory.getLogger(DummyLocalTransformer.class);
private static final int TYPES = 5;
private static final ImmutableSet<Integer> LOAD_OPCODES = ImmutableSet.of(
Opcodes.ILOAD,
Opcodes.LLOAD,
Opcodes.FLOAD,
Opcodes.DLOAD,
Opcodes.ALOAD
);
private static final ImmutableSet<Integer> STORE_OPCODES = ImmutableSet.of(
Opcodes.ISTORE,
Opcodes.LSTORE,
Opcodes.FSTORE,
Opcodes.DSTORE,
Opcodes.ASTORE
);
private int localsRemoved;
@Override
@ -47,28 +28,30 @@ public final class DummyLocalTransformer extends Transformer {
* forward data flow), however, it seems to be good enough to catch
* most dummy locals.
*/
var loads = new boolean[TYPES][method.maxLocals];
var loads = new boolean[method.maxLocals];
for (var it = method.instructions.iterator(); it.hasNext(); ) {
var insn = it.next();
var opcode = insn.getOpcode();
if (LOAD_OPCODES.contains(opcode)) {
var type = opcode - Opcodes.ILOAD;
var load = (VarInsnNode) insn;
loads[type][load.var] = true;
if (opcode != Opcodes.ILOAD) {
continue;
}
var load = (VarInsnNode) insn;
loads[load.var] = true;
}
for (var it = method.instructions.iterator(); it.hasNext(); ) {
var insn = it.next();
var opcode = insn.getOpcode();
if (!STORE_OPCODES.contains(opcode)) {
if (opcode != Opcodes.ISTORE) {
continue;
}
var type = opcode - Opcodes.ISTORE;
var store = (VarInsnNode) insn;
if (loads[type][store.var]) {
if (loads[store.var]) {
continue;
}

Loading…
Cancel
Save