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 Units.
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 Units which branch into the middle of the region protected by a
Trap this implementation of CompleteUnitGraph will include edges from those branching
Units 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.ExceptionDestthrowAnalysis, unitToExceptionalPreds, unitToExceptionalSuccs, unitToExceptionDests, unitToUnexceptionalPreds, unitToUnexceptionalSuccsbody, heads, method, tails, unitChain, unitToPreds, unitToSuccs| Constructor and Description |
|---|
CompleteUnitGraph(Body b) |
buildExceptionalEdges, buildExceptionDests, buildHeadsAndTails, getExceptionalPredsOf, getExceptionalSuccsOf, getExceptionDests, getUnexceptionalPredsOf, getUnexceptionalSuccsOf, initialize, toStringaddEdge, buildUnexceptionalEdges, combineMapValues, getBody, getExtendedBasicBlockPathBetween, getHeads, getPredsOf, getSuccsOf, getTails, iterator, sizeclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetBodygetHeads, getPredsOf, getSuccsOf, getTails, iterator, sizeforEach, spliteratorpublic CompleteUnitGraph(Body b)
Copyright © 2020 Soot OSS. All rights reserved.