]> source.dussan.org Git - javassist.git/commitdiff
fixed JASSIST-168
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Tue, 5 Jun 2012 16:03:48 +0000 (16:03 +0000)
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Tue, 5 Jun 2012 16:03:48 +0000 (16:03 +0000)
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@632 30ef5769-5b8d-40dd-aea6-55b5d6557bb3

Readme.html
src/test/test/javassist/bytecode/analysis/DomTreeTest.java

index 5e79051540a1ee3dd4ef337bf4a260e5d2dbfdc2..450b2ec387c9ba78bc39f648f05f45fb72cf3256 100644 (file)
@@ -282,6 +282,9 @@ see javassist.Dump.
 <h2>Changes</h2>
 
 <p>-version 3.17
+<ul>
+       <li>JIRA JASSIST-168.
+</ul>
 
 <p>-version 3.16.1 on March 6, 2012
 <ul>
index dd348d0104bafed637161a72c2e3c94358305594..4e277e8f9f72afbd9e563ef33f11c1476a678efe 100644 (file)
@@ -36,10 +36,12 @@ public class DomTreeTest extends TestCase {
     }
 
     private void testBlock(Block b, int[] incoming, int[] outgoing) {
+        assertEquals(incoming.length, b.incomings());
         int i = 0;
         for (int index: incoming)
             assertEquals(index, b.incoming(i++).position());
         i = 0;
+        assertEquals(outgoing.length, b.exits());
         for (int index: outgoing)
             assertEquals(index, b.exit(i++).position());
     }
@@ -56,4 +58,35 @@ public class DomTreeTest extends TestCase {
             k = 3 ;
         }
     }
+
+    public void testDomtree2() throws Exception {
+        ControlFlow cf = new ControlFlow(pool.get(DomTreeTest.class.getName()).getDeclaredMethod("test2"));
+        Block[] blocks = cf.basicBlocks();
+        // for (int i = 0; i < blocks.length; i++)
+        //    System.out.println(i + ": " + blocks[i]);
+        testBlock(blocks[0], new int[] { 7 }, new int[] { 14, 7 } );
+        testBlock(blocks[1], new int[] { 0 }, new int[] { 0, 12 } );
+        testBlock(blocks[2], new int[] { 7 }, new int[] {});
+        testBlock(blocks[3], new int[] { 0 }, new int[] {});
+
+        Node[] dom = cf.dominatorTree();
+        assertNull(dom[0].parent());
+        assertEquals(0, dom[1].parent().block().position());
+        assertEquals(7, dom[2].parent().block().position());
+        assertEquals(0, dom[3].parent().block().position());
+
+        Node[] pdom = cf.postDominatorTree();
+        assertNull(pdom[0].parent());
+        assertNull(pdom[1].parent());
+        assertNull(pdom[2].parent());
+        assertNull(pdom[3].parent());
+    }
+
+    public int test2(int i){
+        while (i-- > 0)
+            if (i == 3)
+                return 1;
+
+        return i + 3;
+    }
 }