package test.javassist.bytecode.analysis; import javassist.ClassPool; import javassist.bytecode.analysis.ControlFlow; import javassist.bytecode.analysis.ControlFlow.Block; import javassist.bytecode.analysis.ControlFlow.Node; public class DomTreePrinter { public static void main(String[] args) throws Exception { ClassPool pool = ClassPool.getDefault(); ControlFlow cf = new ControlFlow(pool.get(args[0]).getDeclaredMethod(args[1])); Block[] blocks = cf.basicBlocks(); for (int i = 0; i < blocks.length; i++) System.out.println(i + ": " + blocks[i]); Node[] dom = cf.dominatorTree(); for (int i = 0; i < dom.length; i++) System.out.println(i + ": " + dom[i]); Node[] pdom = cf.postDominatorTree(); for (int i = 0; i < pdom.length; i++) System.out.println(i + ": " + pdom[i]); } public int dummy(int n, int[] array) { for (int i = 0; i < n; i++) { if (array[i] > 0) break; if (array[i] > -1) continue; array[0]++; array[1]++; } return array[0]; } public int dummy2(int n, int[] array) { int i = 0; while (i < n) { if (array[i] > 0) break; if (array[i++] > -1) continue; array[0]++; array[1]++; } return array[0]; } public int dummy3(int n, int[] array) { int i = 0; do { if (array[i] > 0) break; if (array[i++] > -1) continue; array[0]++; array[1]++; } while (i < n); return array[0]; } public int dummy4(int n, int[] array) { int i = 0; do { if (array[i] > 0) if (array[i++] > -1) continue; else return 0; array[0]++; array[1]++; } while (i < n); return array[0]; } }