[Soot-list] Should CFG be used for transformation

Khanh Nguyen khanhtn1 at uci.edu
Wed Oct 30 16:36:44 EDT 2013


Marc-André, thanks for your reply.
In my work, given a class A - I want to generate another class called newA
that preserves the semantics of A. One statement in A may require multiple
statements in newA to achieve the same effect.
The transformation from A to newA can be done in flow-insensitive manner.
If you have statements 1-2-3 in A, newA would have 1'-2'-2''-3'. Even the
tranformation of an if statement is quite simple since we know the target
stmt (for the else branch)
I simply cant think of any example that the transformation would need to be
done in flow-sensitive manner


Thank you,

Khanh Nguyen


On Wed, Oct 30, 2013 at 7:34 AM, Marc-André Laverdière <
marc-andre.laverdiere-papineau at polymtl.ca> wrote:

> Hello,
>
> The answer, as with everything in software engineering, is "it depends".
>
> I am doing plenty of stuff in a flow insensitive manner. That makes
> sense when you only need the information from that Stmt object and
> nothing else. This is what I'd call 'structural changes' - but I am not
> sure this is proper terminology.
>
> Flow insensitive analyses are quick and often crude. That may be good
> enough for what you need to do.
>
> If you want to do flow sensitive, you're obviously going to increase
> your precision, but it is not as simple. Sometimes you need to loop
> until a fixed point is reached - this is not as fast.
>
> So the real question is: what is it that you are trying to do?
>
> Marc-André Laverdière-Papineau
> Doctorant - PhD Candidate
>
> On 10/28/2013 03:15 PM, Khanh Nguyen wrote:
> > Dear All,
> >
> > I have a transformation that operates on Jimple. Up to now, in my
> > transformation, I consider the method body as straight line of codes.
> > Thus, I just loop thru the units in the body in top-down manner and
> > perform my transformation accordingly. The result is the new class.
> >
> > However, I'm concerned whether doing this would create problems (what
> > problems, I dont know) A suggestion to me was to use the CFG instead.
> > I.e., get the original CFG, clone it (to preserve the same flow
> > structure) then going inside each basic block and still perform the
> > transformation on each unit in the basic block, the transformed units
> > will be put in the correspondent basic block in the clone version.
> >
> > Obviously, the latter method involves serious interference with soot
> > since UnitGraph doesnt offer methods to do what I need.
> > So soot experts, do you think CFG is needed? I do not believe CFG is
> > needed (but again, I'm new with soot, I dont know what kind of problems
> > could arise by doing straight-line transformation)
> > Furthermore, CFG requires a body to work on, if I just clone the CFG and
> > then change the statements in the CFG, isnt it the same as considering
> > the body as straight line of codes?
> >
> > Thank you,
> >
> > Khanh Nguyen
> > UC Irvine
> >
> >
> > _______________________________________________
> > Soot-list mailing list
> > Soot-list at sable.mcgill.ca
> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> >
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20131030/208dfa40/attachment.html 


More information about the Soot-list mailing list