[Soot-list] Exceptional edges in control flow analysis in SOOT

Wu Xiaoquan wuxiaoquan07 at otcaix.iscas.ac.cn
Sun Sep 26 00:00:59 EDT 2010


When building CFG with exceptional edges, why the ExceptionalUnitGraph adds
edges from the predecessors of the thrower to the catcher?

 

The relevant code is in the class of
soot.toolkits.graph.ExceptionalUnitGraph, in the method of protected
Set<Unit> buildExceptionalEdges(ThrowAnalysis, Map<Unit,
Collection<ExceptionDest>>, Map<Unit, List<Unit>>, Map<Unit, List<Unit>>,
boolean).

 

In Line 479(ExceptionalUnitGraph.java), the comments are as follows:

               // We need to recognize:

           // - caught exceptions for which we must add edges from the

           // thrower's predecessors to the catcher:

           // - all exceptions of non-throw instructions;

           // - implicit exceptions of throw instructions.

And in Line 538, the for statement is used to add the edges from the
thrower's predecessors to the catcher. 

 

It causes undesired edges in the CFG.

 

 

===================================================

Wu, Xiaoquan 伍晓泉

Technology Center for Software Engineering

Institute of Software, Chinese Academy of Sciences

P.O.Box 8718, Beijing 100190, China 

Email: wuxiaoquan07 at otcaix.iscas.ac.cn

===================================================

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20100926/c026ae44/attachment.html 


More information about the Soot-list mailing list