diff --git a/jode/jode/obfuscator/LocalOptimizer.java.in b/jode/jode/obfuscator/LocalOptimizer.java.in index a1b7063..3b6ca21 100644 --- a/jode/jode/obfuscator/LocalOptimizer.java.in +++ b/jode/jode/obfuscator/LocalOptimizer.java.in @@ -432,7 +432,9 @@ public class LocalOptimizer implements Opcodes, CodeTransformer { Instruction prevInstr = instr.getPrevByAddr(); if (prevInstr != null) { - if (prevInstr.getOpcode() == opc_jsr) { + if (!prevInstr.doesAlwaysJump()) + promoteReads(info, prevInstr); + else if (prevInstr.getOpcode() == opc_jsr) { /* Prev instr is a jsr, promote reads to the * corresponding ret. */ @@ -448,8 +450,7 @@ public class LocalOptimizer implements Opcodes, CodeTransformer { promoteReads(info, prevInstr, jsrInfo.retInfo.usedBySub, true); } - } else if (!prevInstr.doesAlwaysJump()) - promoteReads(info, prevInstr); + } } if (instr.getPreds() != null) {