update the implementation for BackwardsStmtGraph in sootup.core.graph
before in DominanceFinder.java:
List<BasicBlock<?>> preds = new ArrayList<>(block.getPredecessors());
after in DominanceFinder.java:
List<BasicBlock<?>> preds = new ArrayList<>(blockGraph.predecessors(block));
Apply this change , we can create PostDominaceFinder as a wrapper of DominanceFinder directly through use backwardStmtGraph as internal backingGraph. To implement this, I add successors/predecessors api in StmtGraph and its subclasses which use block as param instead of dependending on the BasicBlock api: getPredecessors/getSuccessors.
public class PostDominanceFinder extends DominanceFinder {
public PostDominanceFinder(StmtGraph<?> blockGraph) {
super(new BackwardsStmtGraph(blockGraph));
}
}
update the implementation for
BackwardsStmtGraph
insootup.core.graph
before in
DominanceFinder.java
:after in
DominanceFinder.java
:Apply this change , we can create
PostDominaceFinder
as a wrapper ofDominanceFinder
directly through usebackwardStmtGraph
as internalbackingGraph
. To implement this, I addsuccessors
/predecessors
api inStmtGraph
and its subclasses which use block as param instead of dependending on theBasicBlock
api:getPredecessors
/getSuccessors
.Thank you for considering this update!