예제 #1
0
 public BasicBlockStatement getBasichead() {
   if (type == TYPE_BASICBLOCK) {
     return (BasicBlockStatement) this;
   } else {
     return first.getBasichead();
   }
 }
예제 #2
0
  public HashSet<Statement> buildContinueSet() {
    continueSet.clear();

    for (Statement st : stats) {
      continueSet.addAll(st.buildContinueSet());
      if (st != first) {
        continueSet.remove(st.getBasichead());
      }
    }

    for (StatEdge edge : getEdges(StatEdge.TYPE_CONTINUE, DIRECTION_FORWARD)) {
      continueSet.add(edge.getDestination().getBasichead());
    }

    if (type == TYPE_DO) {
      continueSet.remove(first.getBasichead());
    }

    return continueSet;
  }