public class CompleteUnitGraph extends ExceptionalUnitGraph
Represents a CFG for a Body
instance where the nodes
are Unit
instances, and where control flow
associated with exceptions is taken into account. In a
CompleteUnitGraph
, every Unit
covered by
a Trap
is considered to have the potential to
throw an exception caught by the Trap
, so there are
edges to the Trap
's handler from every trapped
Unit
, as well as from all the predecessors of the
trapped Unit
s.
This implementation of CompleteUnitGraph
is
included for backwards compatibility (new code should use ExceptionalUnitGraph
), but the graphs it produces are not
necessarily identical to the graphs produced by the implementation
of CompleteUnitGraph
provided by versions of Soot up
to and including release 2.1.0. The known differences include:
Body
includes Unit
s which
branch into the middle of the region protected by a
Trap
this implementation of
CompleteUnitGraph
will include edges from those
branching Unit
s to the Trap
's handler
(since the branches are predecessors of an instruction which may
throw an exception caught by the Trap
). The 2.1.0
implementation of CompleteUnitGraph
mistakenly
omitted these edges.Unit
in the Body
might throw an exception caught by a Trap
within the
body, this implementation will include the initial handler
Unit
in the list returned by
getHeads()
(since the handler unit might be the first
Unit in the method to execute to completion). The 2.1.0
implementation of CompleteUnitGraph
mistakenly
omitted the handler from the set of heads.ExceptionalUnitGraph.ExceptionDest
throwAnalysis, unitToExceptionalPreds, unitToExceptionalSuccs, unitToExceptionDests, unitToUnexceptionalPreds, unitToUnexceptionalSuccs
body, heads, method, tails, unitChain, unitToPreds, unitToSuccs
Constructor and Description |
---|
CompleteUnitGraph(Body b) |
buildExceptionalEdges, buildExceptionDests, buildHeadsAndTails, getExceptionalPredsOf, getExceptionalSuccsOf, getExceptionDests, getUnexceptionalPredsOf, getUnexceptionalSuccsOf, initialize, toString
addEdge, buildUnexceptionalEdges, combineMapValues, getBody, getExtendedBasicBlockPathBetween, getHeads, getPredsOf, getSuccsOf, getTails, iterator, size
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getBody
getHeads, getPredsOf, getSuccsOf, getTails, iterator, size
public CompleteUnitGraph(Body b)