[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
>