Re: [abc-users] Adding tags in a ReweavingAnalysis

From: Eric Bodden <eric.bodden@mail.mcgill.ca>
Date: Wed May 09 2007 - 14:38:58 BST

I added a method abc.weaving.weaver.Weaver.reverseRebind(Unit), which
returns the "original statement" for a "current copy of a statement".
This will be available in the next abc release.

Eric

On 09/05/07, Nathan Weston <npweston@gmail.com> wrote:
> Eric,
>
> That's great - thanks so much for your help!
>
> Nathan
>
> On 5/9/07, Eric Bodden <eric.bodden@mail.mcgill.ca> wrote:
> > Hi, Nathan.
> >
> > Yes, there is a way to do this. First of all, we only reset method
> > bodies (and their statements/locals/traps) when doing reweaving. In
> > particular, the SootMethods themselves should remain the same
> > throughout the entire time, so if you tag those, tags should remain.
> >
> > For statements however, you need to use the following API. "Weaver"
> > has a method getUnitBindings() which gives you a mapping from the
> > *original* statement before weaving to the *current* copy of this
> > statement. What you want is the inverse mapping. So you should
> > retrieve this Map, using
> > abc.main.Main.v().getAbcExtension().getWeaver().getUnitBindings() and
> > then inverse that map. Then for each "current statement" you want to
> > tag, you retrieve the original one via that map and tag that statement
> > instead.
> >
> > (We should maybe add a helper method similar to Weaver.rebind(Unit),
> > which does the opposite kind of rebinding in the next abc version...)
> >
> > Cheers,
> > Eric
> >
> > On 09/05/07, Nathan Weston <npweston@gmail.com> wrote:
> > > Hello!
> > >
> > > I'm currently working on an extension to ABC which performs an
> > > analysis of potential interactions between aspects. As it makes sense
> > > to analyse these interactions post-weave-time, I've included the
> > > analysis as a Reweaving Pass and it seems to work quite well in that
> > > context.
> > >
> > > One of the things I would like to do is be able to output Jimple files
> > > which are tagged with the interactions my analysis has found, such
> > > that they can be seen by the developer. Thus in my analyze() method I
> > > have this sort of thing:
> > >
> > > Stmt s = ...;
> > > s.addTag(new StringTag("Link: " + link + " at " + defname));
> > > s.addTag(new ColorTag(ColorTag.RED, "IA"));
> > > return true; // thus ensuring reweaving happens
> > >
> > > However, when I run the analysis with the Soot options "-f jimple" and
> > > "-print-tags", these tags are seemingly not preserved past the
> > > ReweavingAnalysis stage. I suspect this has something to do with the
> > > analysis not being a BodyTransformer which is added to a
> > > transformation pack, but I was wondering if anyone knew of a way of
> > > adding tags to Stmts within a ReweavingAnalysis that could be
> > > preserved and output along with the Jimple?
> > >
> > > Thank you for any help!
> > > Nathan Weston
> > > Lancaster University
> > >
> > >
> >
> >
> > --
> > Eric Bodden
> > Sable Research Group
> > McGill University, Montréal, Canada
> >
> >
>
>

-- 
Eric Bodden
Sable Research Group
McGill University, Montréal, Canada
Received on Wed May 09 14:39:03 2007

This archive was generated by hypermail 2.1.8 : Thu May 31 2007 - 23:50:10 BST