[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Strange exception in VTA



You need to set setLibraryClass() stuff *before* you build the
InvokeGraph with CHA.

Ondrej

On Thu, Jan 23, 2003 at 02:38:12PM -0000, Eric Bodden wrote:
> Hi!
> 
> Today I tried invoking a VTA on a simple Hello World program. First that
> did not work since Soot required the switch "--analyze-context" to be
> set. So I just emulated the functionality of that switch (see below):
> 
> 		//include JRE into classpath
> 	
> soot.Scene.v().setSootClassPath("D:\\Apps\\Coding\\Java\\J2SDK\\sdk1.4.1
> _01\\jre\\lib\\rt.jar;.");
> 
> 		//add class
> 		soot.Scene.v().loadClassAndSupport( "Hello" );
> 
> 		//make it an application class		
> 		((soot.SootClass)
> soot.Scene.v().getClasses().getFirst()).setApplicationClass();
> 
> 		//apply CHA
> 		InvokeGraph graph =
> ClassHierarchyAnalysis.newInvokeGraph();
> 
> 		//simulate switch --analyze-context (whatever that
> means?)
> 		java.util.Iterator contextClassesIt =
> Scene.v().getContextClasses().snapshotIterator();
> 		while (contextClassesIt.hasNext())
> 	
> ((SootClass)contextClassesIt.next()).setLibraryClass();
> 
>             //apply VTA	
> 		VariableTypeAnalysis VTA = new VariableTypeAnalysis(
> graph );
> 
> But the last step leads to:
> 
> Exception in thread "main" java.lang.RuntimeException: Site is not part
> of invoke graph!
>         at
> soot.jimple.toolkits.invoke.InvokeGraph.getTargetsOf(InvokeGraph.java:21
> 5)
>         at
> soot.jimple.toolkits.invoke.VTATypeGraph.<init>(VTATypeGraph.java:351)
>         at
> soot.jimple.toolkits.invoke.VariableTypeAnalysis.<init>(VariableTypeAnal
> ysis.java:159)
>         at Test.main(Test.java:14)
> 
> Does anyone have a clue what's going wrong? Did I forget some
> initialization or sth.?
> 
> Thank you very much,
> Eric
> 
> ------------------------------------------------------------
> Eric Bodden
> CS-DIP full time student @ University of Kent at Canterbury
> UKC internal phone: 5095
> ICQ UIN: 12656220, secure mail on demand
> Website: http://www.bodden.de
>