package jef.asm; import jef.expressions.Expression; import jef.expressions.modifier.ExpressionOptimizerBottomUp; import jef.expressions.modifier.IConst0Fixer; import jef.expressions.modifier.TableAliasInjector; import jef.expressions.modifier.TernaryRewriter; import jef.serializable.SerializableFunction; import jef.serializable.SerializablePredicate; import lombok.Getter; import org.objectweb.asm.ClassReader; import org.objectweb.asm.Opcodes; import java.io.InputStream; import java.io.Serializable; import java.lang.invoke.SerializedLambda; import java.util.stream.IntStream; @Getter public class OptimizedAsmParser extends AsmParser{ public OptimizedAsmParser(SerializablePredicate predicate) { super(predicate); } public OptimizedAsmParser(SerializableFunction function) { super(function); } public Expression parse() throws AsmParseException { var expr = super.parse(); System.out.println(expr); expr = new TernaryRewriter().modify(expr); System.out.println(expr); expr = new IConst0Fixer().modify(expr); System.out.println(expr); expr = new ExpressionOptimizerBottomUp().modify(expr); return expr; } }