[jboss-cvs] javassist SVN: r631 - in trunk: src/main/javassist/bytecode/analysis and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jun 5 10:53:59 EDT 2012
Author: chiba
Date: 2012-06-05 10:53:58 -0400 (Tue, 05 Jun 2012)
New Revision: 631
Added:
trunk/src/test/test/javassist/bytecode/analysis/DomTreeTest.java
Modified:
trunk/build.xml
trunk/src/main/javassist/bytecode/analysis/ControlFlow.java
trunk/src/test/javassist/JvstTest.java
trunk/src/test/test/javassist/bytecode/analysis/DomTreePrinter.java
Log:
fixed JASSIST-168
Modified: trunk/build.xml
===================================================================
--- trunk/build.xml 2012-06-02 10:41:00 UTC (rev 630)
+++ trunk/build.xml 2012-06-05 14:53:58 UTC (rev 631)
@@ -13,12 +13,12 @@
<property name="target-src.jar" value="javassist-src.jar"/>
<property name="lib.dir" value="${basedir}/lib"/>
<property name="src.dir" value="${basedir}/src/main"/>
- <property name="build.dir" value="${basedir}/build"/>
+ <property name="build.dir" value="${basedir}/target"/>
<property name="build.classes.dir" value="${build.dir}/classes"/>
<property name="test.src.dir" value="${basedir}/src/test"/>
- <property name="test.build.dir" value="${basedir}/build/test-classes"/>
+ <property name="test.build.dir" value="${build.dir}/test-classes"/>
<property name="test.run.dir" value="${basedir}/runtest"/>
- <property name="test.reports.dir" value = "${basedir}/build/test-output"/>
+ <property name="test.reports.dir" value = "${build.dir}/test-output"/>
<property name="run.dir" value="${build.classes.dir}"/>
Modified: trunk/src/main/javassist/bytecode/analysis/ControlFlow.java
===================================================================
--- trunk/src/main/javassist/bytecode/analysis/ControlFlow.java 2012-06-02 10:41:00 UTC (rev 630)
+++ trunk/src/main/javassist/bytecode/analysis/ControlFlow.java 2012-06-05 14:53:58 UTC (rev 631)
@@ -149,12 +149,10 @@
BasicBlock[] entrances(Node n) { return n.block.entrances; }
};
nodes[0].makeDepth1stTree(null, visited, 0, distance, access);
- for (int i = 0; i < size; i++)
- visited[i] = false;
-
- while (nodes[0].makeDominatorTree(visited, distance, access))
- ;
-
+ do {
+ for (int i = 0; i < size; i++)
+ visited[i] = false;
+ } while (nodes[0].makeDominatorTree(visited, distance, access));
Node.setChildren(nodes);
return nodes;
}
@@ -202,11 +200,11 @@
if (nodes[i].block.exits() == 0)
counter = nodes[i].makeDepth1stTree(null, visited, counter, distance, access);
- for (int i = 0; i < size; i++)
- visited[i] = false;
-
boolean changed;
do {
+ for (int i = 0; i < size; i++)
+ visited[i] = false;
+
changed = false;
for (int i = 0; i < size; i++)
if (nodes[i].block.exits() == 0)
@@ -245,7 +243,7 @@
protected void toString2(StringBuffer sbuf) {
super.toString2(sbuf);
- sbuf.append(", incomping{");
+ sbuf.append(", incoming{");
for (int i = 0; i < entrances.length; i++)
sbuf.append(entrances[i].position).append(", ");
@@ -280,7 +278,7 @@
public int incomings() { return incoming; }
/**
- * Returns the blocks that the control may jump into this block from.
+ * Returns the block that the control may jump into this block from.
*/
public Block incoming(int n) {
return entrances[n];
Modified: trunk/src/test/javassist/JvstTest.java
===================================================================
--- trunk/src/test/javassist/JvstTest.java 2012-06-02 10:41:00 UTC (rev 630)
+++ trunk/src/test/javassist/JvstTest.java 2012-06-05 14:53:58 UTC (rev 631)
@@ -1126,6 +1126,9 @@
suite.addTestSuite(test.javassist.proxy.ProxyFactoryCompatibilityTest.class);
suite.addTestSuite(test.javassist.proxy.ProxySerializationTest.class);
suite.addTestSuite(test.javassist.proxy.ProxySimpleTest.class);
+ suite.addTestSuite(test.javassist.bytecode.analysis.AnalyzerTest.class);
+ suite.addTestSuite(test.javassist.convert.ArrayAccessReplaceTest.class);
+ suite.addTestSuite(test.javassist.bytecode.analysis.DomTreeTest.class);
return suite;
}
}
Modified: trunk/src/test/test/javassist/bytecode/analysis/DomTreePrinter.java
===================================================================
--- trunk/src/test/test/javassist/bytecode/analysis/DomTreePrinter.java 2012-06-02 10:41:00 UTC (rev 630)
+++ trunk/src/test/test/javassist/bytecode/analysis/DomTreePrinter.java 2012-06-05 14:53:58 UTC (rev 631)
@@ -20,7 +20,6 @@
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) {
Added: trunk/src/test/test/javassist/bytecode/analysis/DomTreeTest.java
===================================================================
--- trunk/src/test/test/javassist/bytecode/analysis/DomTreeTest.java (rev 0)
+++ trunk/src/test/test/javassist/bytecode/analysis/DomTreeTest.java 2012-06-05 14:53:58 UTC (rev 631)
@@ -0,0 +1,59 @@
+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;
+import junit.framework.TestCase;
+
+public class DomTreeTest extends TestCase {
+ private ClassPool pool = ClassPool.getDefault();
+
+ public void testDomtree() throws Exception {
+ ControlFlow cf = new ControlFlow(pool.get(DomTreeTest.class.getName()).getDeclaredMethod("test1"));
+ Block[] blocks = cf.basicBlocks();
+ // for (int i = 0; i < blocks.length; i++)
+ // System.out.println(i + ": " + blocks[i]);
+ testBlock(blocks[0], new int[] {}, new int[] { 11, 6 } );
+ testBlock(blocks[1], new int[] { 0 }, new int[] { 17, 11 } );
+ testBlock(blocks[2], new int[] { 0, 6 }, new int[] { 19, 17 });
+ testBlock(blocks[3], new int[] { 6, 11 }, new int[] { 19 });
+ testBlock(blocks[4], new int[] { 11, 17 }, new int[] {});
+
+ Node[] dom = cf.dominatorTree();
+ assertNull(dom[0].parent());
+ assertEquals(0, dom[1].parent().block().position());
+ assertEquals(0, dom[2].parent().block().position());
+ assertEquals(0, dom[3].parent().block().position());
+ assertEquals(0, dom[4].parent().block().position());
+
+ Node[] pdom = cf.postDominatorTree();
+ assertEquals(19, pdom[0].parent().block().position());
+ assertEquals(19, pdom[1].parent().block().position());
+ assertEquals(19, pdom[2].parent().block().position());
+ assertEquals(19, pdom[3].parent().block().position());
+ assertNull(pdom[4].parent());
+ }
+
+ private void testBlock(Block b, int[] incoming, int[] outgoing) {
+ int i = 0;
+ for (int index: incoming)
+ assertEquals(index, b.incoming(i++).position());
+ i = 0;
+ for (int index: outgoing)
+ assertEquals(index, b.exit(i++).position());
+ }
+
+ private void testNode(Node n, int[] incoming, int[] outgoing) {
+ int i = 0;
+ for (int index: incoming)
+ assertEquals(index, n.parent().block().index());
+ }
+
+ public void test1(){
+ int k=0;
+ if (k != 0 && k!=2 || k < 7) {
+ k = 3 ;
+ }
+ }
+}
Property changes on: trunk/src/test/test/javassist/bytecode/analysis/DomTreeTest.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
More information about the jboss-cvs-commits
mailing list