boolean first=true;
for(int i=0; i<numParameters(); i++) {
if (first) {
- first=false;
+ first=false;
} else
- ret+=", ";
+ ret+=", ";
ret+=getParameter(i);
}
ret+=")";
for(Iterator<FlatNode> setit=set.iterator(); setit.hasNext(); ) {
FlatNode fn=setit.next();
for(int i=0; i<fn.numPrev(); i++) {
- FlatNode fnprev=fn.getPrev(i);
- if (!set.contains(fnprev)) {
- System.out.println(fn+" has unreachable parent:"+i+" "+fnprev);
- System.out.println(printMethod());
- throw new Error();
+ FlatNode fnprev=fn.getPrev(i);
+ if (!set.contains(fnprev)) {
+ System.out.println(fn+" has unreachable parent:"+i+" "+fnprev);
+ System.out.println(printMethod());
+ throw new Error();
- }
+ }
}
}
}
tovisit.remove(fn);
visited.add(fn);
for(int i=0; i<fn.numNext(); i++) {
- FlatNode nn=fn.getNext(i);
- if (nn==null)
- continue;
- if (!visited.contains(nn))
- tovisit.add(nn);
+ FlatNode nn=fn.getNext(i);
+ if (nn==null)
+ continue;
+ if (!visited.contains(nn))
+ tovisit.add(nn);
}
}
return visited;
visited.add(fn);
for(int i=0; i<fn.numNext(); i++) {
- FlatNode nn=fn.getNext(i);
- if(i>0) {
- //1) Edge >1 of node
- nodetolabel.put(nn,new Integer(labelindex++));
- }
- if (!visited.contains(nn)&&!tovisit.contains(nn)) {
- tovisit.add(nn);
- } else {
- //2) Join point
- nodetolabel.put(nn,new Integer(labelindex++));
- }
+ FlatNode nn=fn.getNext(i);
+ if(i>0) {
+ //1) Edge >1 of node
+ nodetolabel.put(nn,new Integer(labelindex++));
+ }
+ if (!visited.contains(nn)&&!tovisit.contains(nn)) {
+ tovisit.add(nn);
+ } else {
+ //2) Join point
+ nodetolabel.put(nn,new Integer(labelindex++));
+ }
}
}
tovisit.add(this);
while(current_node!=null||!tovisit.isEmpty()) {
if (current_node==null) {
- current_node=(FlatNode)tovisit.iterator().next();
- tovisit.remove(current_node);
+ current_node=(FlatNode)tovisit.iterator().next();
+ tovisit.remove(current_node);
} else {
- if (tovisit.contains(current_node))
- tovisit.remove(current_node);
+ if (tovisit.contains(current_node))
+ tovisit.remove(current_node);
}
visited.add(current_node);
if (nodetolabel.containsKey(current_node)) {
- st+="L"+nodetolabel.get(current_node)+":\n";
- for(int i=0; i<current_node.numPrev(); i++) {
- st+="i="+i+" "+current_node.getPrev(i);
- }
- st+="\n";
+ st+="L"+nodetolabel.get(current_node)+":\n";
+ for(int i=0; i<current_node.numPrev(); i++) {
+ st+="i="+i+" "+current_node.getPrev(i);
+ }
+ st+="\n";
}
if (current_node.numNext()==0) {
- if (map==null)
- st+=" "+current_node.toString()+"\n";
- else
- st+=" "+current_node.toString()+"["+map.get(current_node)+"]\n";
- current_node=null;
+ if (map==null)
+ st+=" "+current_node.toString()+"\n";
+ else
+ st+=" "+current_node.toString()+"["+map.get(current_node)+"]\n";
+ current_node=null;
} else if(current_node.numNext()==1) {
- if (map==null)
- st+=" "+current_node.toString()+"\n";
- else
- st+=" "+current_node.toString()+"["+map.get(current_node)+"]\n";
- FlatNode nextnode=current_node.getNext(0);
- if (visited.contains(nextnode)) {
- st+="goto L"+nodetolabel.get(nextnode)+"\n";
- current_node=null;
- } else
- current_node=nextnode;
+ if (map==null)
+ st+=" "+current_node.toString()+"\n";
+ else
+ st+=" "+current_node.toString()+"["+map.get(current_node)+"]\n";
+ FlatNode nextnode=current_node.getNext(0);
+ if (visited.contains(nextnode)) {
+ st+="goto L"+nodetolabel.get(nextnode)+"\n";
+ current_node=null;
+ } else
+ current_node=nextnode;
} else if (current_node.numNext()==2) {
- /* Branch */
- st+=" "+((FlatCondBranch)current_node).toString("L"+nodetolabel.get(current_node.getNext(1)))+"\n";
- if (!visited.contains(current_node.getNext(1)))
- tovisit.add(current_node.getNext(1));
- if (visited.contains(current_node.getNext(0))) {
- st+="goto L"+nodetolabel.get(current_node.getNext(0))+"\n";
- current_node=null;
- } else
- current_node=current_node.getNext(0);
+ /* Branch */
+ st+=" "+((FlatCondBranch)current_node).toString("L"+nodetolabel.get(current_node.getNext(1)))+"\n";
+ if (!visited.contains(current_node.getNext(1)))
+ tovisit.add(current_node.getNext(1));
+ if (visited.contains(current_node.getNext(0))) {
+ st+="goto L"+nodetolabel.get(current_node.getNext(0))+"\n";
+ current_node=null;
+ } else
+ current_node=current_node.getNext(0);
} else throw new Error();
}
return st+"}\n";