/* Copyright (c) 2006, Sriram Srinivasan
*
* You may distribute this software under the terms of the license
* specified in the file "License"
*/
package kilim.test;
import java.util.ArrayList;
import kilim.analysis.BasicBlock;
import kilim.analysis.MethodFlow;
public class TestJSR extends Base {
public void testJSRSizes() throws Exception {
String className = "kilim.test.ex.ExJSR";
try {
Class.forName(className);
} catch (ClassNotFoundException cnfe) {
fail("Please use jasmin to compile " + className);
} catch (VerifyError e) {
fail("Verification error for " + className + ": " + e.getMessage());
}
cache(className);
MethodFlow flow = getFlow("simpleJSR");
assertEquals(3, flow.getBasicBlocks().size());
flow = getFlow("pausableJSR1");
// System.out.println(flow.getBasicBlocks());
assertEquals(4, flow.getBasicBlocks().size());
flow = getFlow("pausableJSR2");
ArrayList<BasicBlock> bbs = flow.getBasicBlocks();
assertEquals(7, bbs.size());
// make sure the blocks are unique
int flag = 1 << 12;
for (BasicBlock bb: bbs) {
assertFalse("BasicBlock list contains duplicates", bb.hasFlag(flag));
bb.setFlag(flag);
}
}
}