final TranslationAdvice advice = Optimizer.getAdvice();
/** {@inheritDoc} */ @Override public boolean hasSideEffect() { return Optimizer.getPreserveLocals() && getLocalAssignment() != null; }
/** * 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)); }
ssaMeth = Optimizer.debugNoRegisterAllocation(rmeth, paramWidth, isStatic, true, advice, EnumSet.allOf(Optimizer.OptionalStep.class)); } else if ("edge-split".equals(args.ssaStep)) { ssaMeth = Optimizer.debugEdgeSplit(rmeth, paramWidth, isStatic, true, advice); } else if ("phi-placement".equals(args.ssaStep)) { ssaMeth = Optimizer.debugPhiPlacement( rmeth, paramWidth, isStatic, true, advice); } else if ("renaming".equals(args.ssaStep)) { ssaMeth = Optimizer.debugRenaming( rmeth, paramWidth, isStatic, true, advice); } else if ("dead-code".equals(args.ssaStep)) { ssaMeth = Optimizer.debugDeadCodeRemover( rmeth, paramWidth, isStatic,true, advice);
runSsaFormSteps(ssaMeth, steps); > advice.getMaxOptimalRegisterCount()) { resultMeth = optimizeMinimizeRegisters(rmeth, paramWidth, isStatic, steps);
public static SsaMethod debugNoRegisterAllocation(RopMethod rmeth, int paramWidth, boolean isStatic, boolean inPreserveLocals, TranslationAdvice inAdvice, EnumSet<OptionalStep> steps) { SsaMethod ssaMeth; preserveLocals = inPreserveLocals; advice = inAdvice; ssaMeth = SsaConverter.convertToSsaMethod(rmeth, paramWidth, isStatic); runSsaFormSteps(ssaMeth, steps); LivenessAnalyzer.constructInterferenceGraph(ssaMeth); return ssaMeth; } }
ssaMeth = Optimizer.debugNoRegisterAllocation(rmeth, paramWidth, isStatic, true, advice, EnumSet.allOf(Optimizer.OptionalStep.class)); } else if ("edge-split".equals(args.ssaStep)) { ssaMeth = Optimizer.debugEdgeSplit(rmeth, paramWidth, isStatic, true, advice); } else if ("phi-placement".equals(args.ssaStep)) { ssaMeth = Optimizer.debugPhiPlacement( rmeth, paramWidth, isStatic, true, advice); } else if ("renaming".equals(args.ssaStep)) { ssaMeth = Optimizer.debugRenaming( rmeth, paramWidth, isStatic, true, advice); } else if ("dead-code".equals(args.ssaStep)) { ssaMeth = Optimizer.debugDeadCodeRemover( rmeth, paramWidth, isStatic,true, advice);
runSsaFormSteps(ssaMeth, steps); > advice.getMaxOptimalRegisterCount()) { resultMeth = optimizeMinimizeRegisters(rmeth, paramWidth, isStatic, steps);
public static SsaMethod debugNoRegisterAllocation(RopMethod rmeth, int paramWidth, boolean isStatic, boolean inPreserveLocals, TranslationAdvice inAdvice, EnumSet<OptionalStep> steps) { SsaMethod ssaMeth; preserveLocals = inPreserveLocals; advice = inAdvice; ssaMeth = SsaConverter.convertToSsaMethod(rmeth, paramWidth, isStatic); runSsaFormSteps(ssaMeth, steps); LivenessAnalyzer.constructInterferenceGraph(ssaMeth); return ssaMeth; } }
ssaMeth = Optimizer.debugNoRegisterAllocation(rmeth, paramWidth, isStatic, true, advice, EnumSet.allOf(Optimizer.OptionalStep.class)); } else if ("edge-split".equals(args.ssaStep)) { ssaMeth = Optimizer.debugEdgeSplit(rmeth, paramWidth, isStatic, true, advice); } else if ("phi-placement".equals(args.ssaStep)) { ssaMeth = Optimizer.debugPhiPlacement( rmeth, paramWidth, isStatic, true, advice); } else if ("renaming".equals(args.ssaStep)) { ssaMeth = Optimizer.debugRenaming( rmeth, paramWidth, isStatic, true, advice); } else if ("dead-code".equals(args.ssaStep)) { ssaMeth = Optimizer.debugDeadCodeRemover( rmeth, paramWidth, isStatic,true, advice);
runSsaFormSteps(ssaMeth, steps); > advice.getMaxOptimalRegisterCount()) { resultMeth = optimizeMinimizeRegisters(rmeth, paramWidth, isStatic, steps);
/** * 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)); }
/** {@inheritDoc} */ @Override public boolean hasSideEffect() { return Optimizer.getPreserveLocals() && getLocalAssignment() != null; }
final TranslationAdvice advice = Optimizer.getAdvice();
public static SsaMethod debugNoRegisterAllocation(RopMethod rmeth, int paramWidth, boolean isStatic, boolean inPreserveLocals, TranslationAdvice inAdvice, EnumSet<OptionalStep> steps) { SsaMethod ssaMeth; preserveLocals = inPreserveLocals; advice = inAdvice; ssaMeth = SsaConverter.convertToSsaMethod(rmeth, paramWidth, isStatic); runSsaFormSteps(ssaMeth, steps); LivenessAnalyzer.constructInterferenceGraph(ssaMeth); return ssaMeth; } }
ssaMeth = Optimizer.debugNoRegisterAllocation(rmeth, paramWidth, isStatic, true, advice, EnumSet.allOf(Optimizer.OptionalStep.class)); } else if ("edge-split".equals(args.ssaStep)) { ssaMeth = Optimizer.debugEdgeSplit(rmeth, paramWidth, isStatic, true, advice); } else if ("phi-placement".equals(args.ssaStep)) { ssaMeth = Optimizer.debugPhiPlacement( rmeth, paramWidth, isStatic, true, advice); } else if ("renaming".equals(args.ssaStep)) { ssaMeth = Optimizer.debugRenaming( rmeth, paramWidth, isStatic, true, advice); } else if ("dead-code".equals(args.ssaStep)) { ssaMeth = Optimizer.debugDeadCodeRemover( rmeth, paramWidth, isStatic,true, advice);
runSsaFormSteps(ssaMeth, steps); > advice.getMaxOptimalRegisterCount()) { resultMeth = optimizeMinimizeRegisters(rmeth, paramWidth, isStatic, steps);
/** * 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)); }
/** {@inheritDoc} */ @Override public boolean hasSideEffect() { return Optimizer.getPreserveLocals() && getLocalAssignment() != null; }
final TranslationAdvice advice = Optimizer.getAdvice();