[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
AW: Re: AllocNodes
Hi,
thank you for your fast and capable help.
I switched off the VTA-option and it immediately worked!
Misleadingly I that VTA was the most precise analysis in spark.
Greetings,
Thorsten Buckley
Ondrej Lhotak wrote:
> On Thu, Oct 16, 2003 at 02:12:18PM +0200, buckley wrote:
> > Hi,
> >
> > I'm a student of computer science and I want to use SOOT as a part of my
> > master thesis.
>
> That's great!
>
> > Particularly I need SPARK's points-to-sets.
> >
> > Thus I built the PAG using the VTA option of the small example below.
> > What I need next is to handle all allocations in the class.
> > As discribed in CC2003
> > (http://www.sable.mcgill.ca/publications/papers/#cc2003-1)
> > I associated the AllocNodes in the PAG with what I wanted to have.
> >
> > As result I get three nodes from "pag.getAllocNodeNumberer()":
> > "AllocNode 1 of Type A", "AllocNode 2 of Type B", "AllocNode 3 of Type
> > C".
> >
> > Now I was wondering what happened with "d" and "e".
> > Is there any fault in my consideration?
>
> One of the characteristics of VTA is that it uses a single AllocNode to
> represent all allocation sites of the same type. It sounds like you want
> to run Spark with its default settings (not with VTA), in which case
> it will create one AllocNode for each allocation site (for your example,
> it should make five AllocNodes).
>
> VTA was an earlier analysis than Spark, and it's reimplemented in Spark;
> for all the details on VTA, the VTA paper was in OOPSLA 2000, and it's
> online at:
> http://www.sable.mcgill.ca/publications/papers/#oopsla2000
>
> Ondrej
>
> >
> > Additionally I tried out the "pag.getVarNodeNumberer()"-function,
> > and it gave me "a", "b", "c", "d", "e", "ap" which are all locals in the
> >
> > "main"-method I think and thus not of interest to me.
> >
> > Greetings,
> > Thorsten Buckley
> >
> > ------------------------------------
> > public class Test {
> > public static void main(String[] args) {
> > A a = new A(); B b = new B(); C c = new C();
> > A d = new A(); B e = new B();
> > A ap;
> > if(args.length == 0) { ap = a; }
> > else { if(args.length == 1) { ap = b; }
> > else { ap = c; } }
> > ap.f();
> > }
> > }