Class PruneInfeasibleExceptionEdges

  • All Implemented Interfaces:
    EdgeTypes

    public class PruneInfeasibleExceptionEdges
    extends java.lang.Object
    implements EdgeTypes
    Prune a CFG to remove infeasible exception edges. In order to determine what kinds of exceptions can be thrown by explicit ATHROW instructions, type analysis must first be performed on the unpruned CFG.
    Author:
    David Hovemeyer
    See Also:
    CFG, TypeAnalysis
    • Constructor Detail

      • PruneInfeasibleExceptionEdges

        public PruneInfeasibleExceptionEdges​(CFG cfg,
                                             org.apache.bcel.generic.MethodGen methodGen,
                                             TypeDataflow typeDataflow)
        Constructor.
        Parameters:
        cfg - the CFG to prune
        methodGen - the method
        typeDataflow - initialized TypeDataflow object for the CFG, indicating the types of all stack locations
    • Method Detail

      • execute

        public void execute()
                     throws java.lang.ClassNotFoundException
        Prune infeasible exception edges from the CFG. If the method returns normally, then the operation was successful, and the CFG should no longer contain infeasible exception edges. If ClassNotFoundException or DataflowAnalysisException are thrown, then the operation was unsuccessful, but the CFG is still valid because it was not modified. If a runtime exception is thrown, then the CFG may be partially modified and should be considered invalid.
        Throws:
        java.lang.ClassNotFoundException
      • wasCFGModified

        public boolean wasCFGModified()
        Returns:
        true if modified