adapt to wala changes for cross-language call graphs

git-svn-id: https://wala.svn.sourceforge.net/svnroot/wala/trunk@1213 f5eafffb-2e1d-0410-98e4-8ec43c5233c4
This commit is contained in:
dolby-oss 2007-06-01 03:27:41 +00:00
parent 0ed8d96d55
commit 30f01f77a4
3 changed files with 45 additions and 3 deletions

View File

@ -1035,4 +1035,31 @@ public class PrimitivesTest extends WalaTestCase {
assertTrue(v2.isSubset(v1));
}
public void testSpecificBugsInSemiSparseMutableIntSets() {
SemiSparseMutableIntSet v1 = new SemiSparseMutableIntSet();
v1.add(54);
v1.add(58);
v1.add(59);
v1.add(64);
v1.add(67);
v1.add(73);
v1.add(83);
v1.add(105);
v1.add(110);
v1.add(126);
v1.add(136);
v1.add(143);
v1.add(150);
v1.add(155);
v1.add(156);
v1.add(162);
v1.add(168);
v1.add(183);
v1.add(191);
v1.add(265);
v1.add(294);
v1.add(324);
v1.add(344);
v1.add(397);
}
}

View File

@ -55,7 +55,7 @@ public class PiNodeCallGraphTest extends WalaTestCase {
private static final String thatName = TestConstants.PI_TEST_MAIN + "$That";
private static final ClassLoaderReference loader = new ClassLoaderReference(Atom.findOrCreateUnicodeAtom("Application"));
private static final ClassLoaderReference loader = ClassLoaderReference.Application;
private static final TypeReference whateverRef = TypeReference.findOrCreate(loader, TypeName.string2TypeName(whateverName));

View File

@ -139,7 +139,7 @@ public class SimpleThreadEscapeAnalysis extends AbstractAnalysisEngine {
//
// ...and the class hierarchy
//
ClassHierarchy cha = buildClassHierarchy();
IClassHierarchy cha = buildClassHierarchy();
setClassHierarchy(cha);
//
@ -281,6 +281,15 @@ public class SimpleThreadEscapeAnalysis extends AbstractAnalysisEngine {
return escapingTypes;
}
/**
* This main program shows one example use of thread escape
* analysis: producing a set of fields to be monitored for a
* dynamic race detector. The idea is that any field might have a
* race with two excpetions: final fields do not have races since
* there are no writes to them, and volatile fields have atomic read
* and write semantics provided by trhe VM. Hence, this piece of
* code produces a list of all other fields.
*/
public static void main(String[] args) throws IOException, ClassHierarchyException {
String mainClassName = args[0];
@ -292,7 +301,13 @@ public class SimpleThreadEscapeAnalysis extends AbstractAnalysisEngine {
Set<IClass> escapingTypes = (new SimpleThreadEscapeAnalysis(jars, mainClassName)).gatherThreadEscapingClasses();
for (Iterator<IClass> types = escapingTypes.iterator(); types.hasNext();) {
System.out.println(types.next().getName().toString());
IClass cls = types.next();
for(Iterator fs = cls.getAllFields().iterator(); fs.hasNext(); ) {
IField f = (IField) fs.next();
if (!f.isVolatile() && !f.isFinal()) {
System.err.println( f.getReference() );
}
}
}
}
}