[Soot-list] Difference between entryInitialFlow and newInitialFlow in data flow analysis?

Laurie Hendren hendren at cs.mcgill.ca
Sun Jul 8 17:49:10 EDT 2012


It is used when processing an edge (usually a back-edge of a cfg), where 
the destination node of the edge has not yet been processed.    For 
example, think of the fixed point computation for a loop.  On the first 
iteration of the fixed-point you don't have any flow information for the 
back edge.    Thus, you want to pick something that stands for 
"undefined".   For set union problems this is usually the empty set and 
for set intersection problems this is usually the full set.

Cheers, Laurie

+--------------------------------------------------------------
| Laurie Hendren --- http://www.sable.mcgill.ca/~hendren
| Associate Dean (Academic), Faculty of Science
| Professor, School of Computer Science, McGill University
| *** New McLAB Release ***
| *** http://www.sable.mcgill.ca/mclab/Software.html ***
| Other Proj: www.sable.mcgill.ca/soot  www.sable.mcgill.ca/abc
+--------------------------------------------------------------

On 08/07/2012 5:36 PM, Amit wrote:
>
> Hi Eric,
>
> Thanks for the explanation. However, I am still a bit confused. 
> entryInitialFlow is clear. It is invoked before the entry node is 
> processed. However, when is the newInitialFlow used?
>
> If I understood correctly, info for intermediate nodes is calculated 
> using merge and flowthrough methods using the in set (which is decided 
> initially by entryInitialFlow).
>
> Where in the graph would  newInitialFlow be used? Is it used at the 
> instructions where new objects  are created?
>
> Thanks
> Amitabh
>
> On Jul 1, 2012 3:20 AM, "Eric Bodden" <eric.bodden at ec-spride.de 
> <mailto:eric.bodden at ec-spride.de>> wrote:
>
>     Hello.
>
>     entryInitialFlow returns the initial abstraction that is used at the
>     entry point to the method.
>     newInitialFlow returns the initial abstraction that is used at all
>     other places in the method.
>
>     Hope that helps,
>     Eric
>
>     On 30 June 2012 15:20, Amit <ciphermaker99 at gmail.com
>     <mailto:ciphermaker99 at gmail.com>> wrote:
>     > In soot ForwardFlowAnalysis there are two method we must override
>     >
>     > entryInitialFlow()
>     > newInitialFlow()
>     >
>     > Can anyone explain the purpose of these statements and when
>     these are
>     > invoked?
>     >
>     > Rgds
>     > Amit
>     >
>     > _______________________________________________
>     > Soot-list mailing list
>     > Soot-list at sable.mcgill.ca <mailto:Soot-list at sable.mcgill.ca>
>     > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>     >
>
>
>
>     --
>     Eric Bodden, Ph.D., http://bodden.de/
>     Head of Secure Software Engineering Group at EC SPRIDE
>     Principal Investigator in Secure Services at CASED
>     Tel: +49 6151 16-75422    Fax: +49 6151 16-72051
>     Room 3.2.14, Mornewegstr. 30, 64293 Darmstadt
>
>
>
> _______________________________________________
> 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/20120708/49b62d5b/attachment.html 


More information about the Soot-list mailing list