Browse Source

fixed JASSIST-168

git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@632 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
tags/rel_3_17_1_ga
chiba 12 years ago
parent
commit
12d5a5f3cc
2 changed files with 36 additions and 0 deletions
  1. 3
    0
      Readme.html
  2. 33
    0
      src/test/test/javassist/bytecode/analysis/DomTreeTest.java

+ 3
- 0
Readme.html View 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>

+ 33
- 0
src/test/test/javassist/bytecode/analysis/DomTreeTest.java View 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;
}
}

Loading…
Cancel
Save