}
Integer n = mapMethodContextToNumUpdates.get(mc);
try {
- og.writeGraph(mc, n, true, true, true, false, false, true);
+ og.writeGraph(mc+"COMPLETE"+String.format("%05d", n),
+ true, // write labels (variables)
+ true, // selectively hide intermediate temp vars
+ true, // prune unreachable heap regions
+ false, // show back edges to confirm graph validity
+ false, // show parameter indices (unmaintained!)
+ true, // hide subset reachability states
+ true); // hide edge taints
} catch( IOException e ) {}
mapMethodContextToNumUpdates.put(mc, n + 1);
}
private void writeFinalContextGraphs() {
- // arguments to writeGraph are:
- // boolean writeLabels,
- // boolean labelSelect,
- // boolean pruneGarbage,
- // boolean writeReferencers
- // boolean writeParamMappings
- // boolean hideSubsetReachability
-
Set entrySet = mapMethodContextToCompleteOwnershipGraph.entrySet();
Iterator itr = entrySet.iterator();
while( itr.hasNext() ) {
OwnershipGraph og = (OwnershipGraph) me.getValue();
try {
- og.writeGraph(mc, true, true, true, false, false, true);
+ og.writeGraph(mc+"COMPLETE",
+ true, // write labels (variables)
+ true, // selectively hide intermediate temp vars
+ true, // prune unreachable heap regions
+ false, // show back edges to confirm graph validity
+ false, // show parameter indices (unmaintained!)
+ true, // hide subset reachability states
+ true); // hide edge taints
} catch( IOException e ) {}
}
}
graphName = graphName+fn;
}
try {
- // arguments to writeGraph are:
- // boolean writeLabels,
- // boolean labelSelect,
- // boolean pruneGarbage,
- // boolean writeReferencers
- // boolean writeParamMappings
-
- //og.writeGraph(graphName, true, true, true, false, false);
- og.writeGraph(graphName, true, true, true, false, false);
+ og.writeGraph(graphName,
+ true, // write labels (variables)
+ true, // selectively hide intermediate temp vars
+ true, // prune unreachable heap regions
+ false, // show back edges to confirm graph validity
+ false, // show parameter indices (unmaintained!)
+ true, // hide subset reachability states
+ true); // hide edge taints
} catch( Exception e ) {
System.out.println("Error writing debug capture.");
System.exit(0);
fm.getMethod().getSymbol().equals( debugCallee ) ) {
try {
- writeGraph( "debug1BeforeCall", true, true, true, false, false );
- ogCallee.writeGraph( "debug0Callee", true, true, true, false, false );
+ writeGraph("debug1BeforeCall",
+ true, // write labels (variables)
+ true, // selectively hide intermediate temp vars
+ true, // prune unreachable heap regions
+ false, // show back edges to confirm graph validity
+ false, // show parameter indices (unmaintained!)
+ true, // hide subset reachability states
+ true); // hide edge taints
+
+ ogCallee.writeGraph("debug0Callee",
+ true, // write labels (variables)
+ true, // selectively hide intermediate temp vars
+ true, // prune unreachable heap regions
+ false, // show back edges to confirm graph validity
+ false, // show parameter indices (unmaintained!)
+ true, // hide subset reachability states
+ true); // hide edge taints
} catch( IOException e ) {}
System.out.println( " "+mc+" is calling "+fm );
if( mc.getDescriptor().getSymbol().equals( debugCaller ) &&
fm.getMethod().getSymbol().equals( debugCallee ) ) {
try {
- writeGraph( "debug7JustBeforeMergeToKCapacity", true, true, true, false, false );
+ writeGraph("debug7JustBeforeMergeToKCapacity",
+ true, // write labels (variables)
+ true, // selectively hide intermediate temp vars
+ true, // prune unreachable heap regions
+ false, // show back edges to confirm graph validity
+ false, // show parameter indices (unmaintained!)
+ true, // hide subset reachability states
+ true); // hide edge taints
} catch( IOException e ) {}
}
if( mc.getDescriptor().getSymbol().equals( debugCaller ) &&
fm.getMethod().getSymbol().equals( debugCallee ) ) {
try {
- writeGraph( "debug8JustBeforeSweep", true, true, true, false, false );
+ writeGraph( "debug8JustBeforeSweep",
+ true, // write labels (variables)
+ true, // selectively hide intermediate temp vars
+ true, // prune unreachable heap regions
+ false, // show back edges to confirm graph validity
+ false, // show parameter indices (unmaintained!)
+ true, // hide subset reachability states
+ true); // hide edge taints
} catch( IOException e ) {}
}
if( mc.getDescriptor().getSymbol().equals( debugCaller ) &&
fm.getMethod().getSymbol().equals( debugCallee ) ) {
try {
- writeGraph( "debug9endResolveCall", true, true, true, false, false );
+ writeGraph( "debug9endResolveCall",
+ true, // write labels (variables)
+ true, // selectively hide intermediate temp vars
+ true, // prune unreachable heap regions
+ false, // show back edges to confirm graph validity
+ false, // show parameter indices (unmaintained!)
+ true, // hide subset reachability states
+ true); // hide edge taints
} catch( IOException e ) {}
System.out.println( " "+mc+" done calling "+fm );
++x;
}
+ /*
// for writing ownership graphs to dot files
public void writeGraph(MethodContext mc,
FlatNode fn,
false
);
}
+ */
public void writeGraph(String graphName,
boolean writeLabels,
boolean pruneGarbage,
boolean writeReferencers,
boolean writeParamMappings,
- boolean hideSubsetReachability
+ boolean hideSubsetReachability,
+ boolean hideEdgeTaints
) throws java.io.IOException {
// remove all non-word characters from the graph name so
null,
visited,
writeReferencers,
- hideSubsetReachability);
+ hideSubsetReachability,
+ hideEdgeTaints);
}
}
}
null,
visited,
writeReferencers,
- hideSubsetReachability);
+ hideSubsetReachability,
+ hideEdgeTaints);
}
bw.write(" " + ln.toString() +
" -> " + hrn.toString() +
- "[label=\"" + edge.toGraphEdgeString(hideSubsetReachability) +
+ "[label=\"" + edge.toGraphEdgeString(hideSubsetReachability,
+ hideEdgeTaints) +
"\",decorate];\n");
}
}
TempDescriptor td,
HashSet<HeapRegionNode> visited,
boolean writeReferencers,
- boolean hideSubsetReachability
+ boolean hideSubsetReachability,
+ boolean hideEdgeTaints
) throws java.io.IOException {
if( visited.contains(hrn) ) {
case VISIT_HRN_WRITE_FULL:
bw.write(" " + hrn.toString() +
" -> " + hrnChild.toString() +
- "[label=\"" + edge.toGraphEdgeString(hideSubsetReachability) +
+ "[label=\"" + edge.toGraphEdgeString(hideSubsetReachability,
+ hideEdgeTaints) +
"\",decorate];\n");
break;
}
td,
visited,
writeReferencers,
- hideSubsetReachability);
+ hideSubsetReachability,
+ hideEdgeTaints);
}
}