/** * Runs optimization algorthims over this method, and returns a new * instance of RopMethod with the changes. * * @param rmeth method to process * @param paramWidth the total width, in register-units, of this method's * parameters * @param isStatic true if this method has no 'this' pointer argument. * @param inPreserveLocals true if local variable info should be preserved, * at the cost of some registers and insns * @param inAdvice {@code non-null;} translation advice * @return optimized method */ public static RopMethod optimize(RopMethod rmeth, int paramWidth, boolean isStatic, boolean inPreserveLocals, TranslationAdvice inAdvice) { return optimize(rmeth, paramWidth, isStatic, inPreserveLocals, inAdvice, EnumSet.allOf(OptionalStep.class)); }
/** * Runs optimization algorthims over this method, and returns a new * instance of RopMethod with the changes. * * @param rmeth method to process * @param paramWidth the total width, in register-units, of this method's * parameters * @param isStatic true if this method has no 'this' pointer argument. * @param inPreserveLocals true if local variable info should be preserved, * at the cost of some registers and insns * @param inAdvice {@code non-null;} translation advice * @return optimized method */ public static RopMethod optimize(RopMethod rmeth, int paramWidth, boolean isStatic, boolean inPreserveLocals, TranslationAdvice inAdvice) { return optimize(rmeth, paramWidth, isStatic, inPreserveLocals, inAdvice, EnumSet.allOf(OptionalStep.class)); }
/** * Runs optimization algorthims over this method, and returns a new * instance of RopMethod with the changes. * * @param rmeth method to process * @param paramWidth the total width, in register-units, of this method's * parameters * @param isStatic true if this method has no 'this' pointer argument. * @param inPreserveLocals true if local variable info should be preserved, * at the cost of some registers and insns * @param inAdvice {@code non-null;} translation advice * @return optimized method */ public static RopMethod optimize(RopMethod rmeth, int paramWidth, boolean isStatic, boolean inPreserveLocals, TranslationAdvice inAdvice) { return optimize(rmeth, paramWidth, isStatic, inPreserveLocals, inAdvice, EnumSet.allOf(OptionalStep.class)); }
/** * Runs optimization algorthims over this method, and returns a new * instance of RopMethod with the changes. * * @param rmeth method to process * @param paramWidth the total width, in register-units, of this method's * parameters * @param isStatic true if this method has no 'this' pointer argument. * @param inPreserveLocals true if local variable info should be preserved, * at the cost of some registers and insns * @param inAdvice {@code non-null;} translation advice * @return optimized method */ public static RopMethod optimize(RopMethod rmeth, int paramWidth, boolean isStatic, boolean inPreserveLocals, TranslationAdvice inAdvice) { return optimize(rmeth, paramWidth, isStatic, inPreserveLocals, inAdvice, EnumSet.allOf(OptionalStep.class)); }
/** * Runs optimization algorthims over this method, and returns a new * instance of RopMethod with the changes. * * @param rmeth method to process * @param paramWidth the total width, in register-units, of this method's * parameters * @param isStatic true if this method has no 'this' pointer argument. * @param inPreserveLocals true if local variable info should be preserved, * at the cost of some registers and insns * @param inAdvice {@code non-null;} translation advice * @return optimized method */ public static RopMethod optimize(RopMethod rmeth, int paramWidth, boolean isStatic, boolean inPreserveLocals, TranslationAdvice inAdvice) { return optimize(rmeth, paramWidth, isStatic, inPreserveLocals, inAdvice, EnumSet.allOf(OptionalStep.class)); }
/** * Runs optimization algorthims over this method, and returns a new * instance of RopMethod with the changes. * * @param rmeth method to process * @param paramWidth the total width, in register-units, of this method's * parameters * @param isStatic true if this method has no 'this' pointer argument. * @param inPreserveLocals true if local variable info should be preserved, * at the cost of some registers and insns * @param inAdvice {@code non-null;} translation advice * @return optimized method */ public static RopMethod optimize(RopMethod rmeth, int paramWidth, boolean isStatic, boolean inPreserveLocals, TranslationAdvice inAdvice) { return optimize(rmeth, paramWidth, isStatic, inPreserveLocals, inAdvice, EnumSet.allOf(OptionalStep.class)); }
/** * Runs optimization algorthims over this method, and returns a new * instance of RopMethod with the changes. * * @param rmeth method to process * @param paramWidth the total width, in register-units, of this method's * parameters * @param isStatic true if this method has no 'this' pointer argument. * @param inPreserveLocals true if local variable info should be preserved, * at the cost of some registers and insns * @param inAdvice {@code non-null;} translation advice * @return optimized method */ public static RopMethod optimize(RopMethod rmeth, int paramWidth, boolean isStatic, boolean inPreserveLocals, TranslationAdvice inAdvice) { return optimize(rmeth, paramWidth, isStatic, inPreserveLocals, inAdvice, EnumSet.allOf(OptionalStep.class)); }
/** * Runs optimization algorthims over this method, and returns a new * instance of RopMethod with the changes. * * @param rmeth method to process * @param paramWidth the total width, in register-units, of this method's * parameters * @param isStatic true if this method has no 'this' pointer argument. * @param inPreserveLocals true if local variable info should be preserved, * at the cost of some registers and insns * @param inAdvice {@code non-null;} translation advice * @return optimized method */ public static RopMethod optimize(RopMethod rmeth, int paramWidth, boolean isStatic, boolean inPreserveLocals, TranslationAdvice inAdvice) { return optimize(rmeth, paramWidth, isStatic, inPreserveLocals, inAdvice, EnumSet.allOf(OptionalStep.class)); }
int paramWidth = computeParamWidth(meth, isStatic); rmeth = Optimizer.optimize(rmeth, paramWidth, isStatic, true, advice);
= Optimizer.optimize(nonOptRmeth, paramSize, isStatic, args.localInfo, advice, steps);
= Optimizer.optimize(nonOptRmeth, paramSize, isStatic, args.localInfo, advice, steps);
= Optimizer.optimize(nonOptRmeth, paramSize, isStatic, args.localInfo, advice, steps);
= Optimizer.optimize(nonOptRmeth, paramSize, isStatic, args.localInfo, advice, steps);
= Optimizer.optimize(nonOptRmeth, paramSize, isStatic, args.localInfo, advice, steps);
rmeth = Optimizer.optimize(rmeth, BaseDumper.computeParamWidth(meth, isStatic), isStatic, true, advice);
= Optimizer.optimize(nonOptRmeth, paramSize, isStatic, args.localInfo, advice, steps);
rmeth = Optimizer.optimize(rmeth, BaseDumper.computeParamWidth(meth, isStatic), isStatic, true, advice);
rmeth = Optimizer.optimize(rmeth, BaseDumper.computeParamWidth(meth, isStatic), isStatic, true, advice);
rmeth = Optimizer.optimize(rmeth, BaseDumper.computeParamWidth(meth, isStatic), isStatic, true, advice);
rmeth = Optimizer.optimize(rmeth, BaseDumper.computeParamWidth(meth, isStatic), isStatic, true, advice);