switch( fn.kind() ) {
case FKind.FlatGenReachNode: {
+ FlatGenReachNode fgrn = (FlatGenReachNode) fn;
+
System.out.println( "Generating a reach graph!" );
- rg.writeGraph( "genReach"+d,
+ rg.writeGraph( "genReach"+fgrn.getGraphName(),
true, // write labels (variables)
true, // selectively hide intermediate temp vars
true, // prune unreachable heap regions
// callee analysis, finish this transformation
rg = rgMergeOfPossibleCallers;
+
+ // jjenista: what is this? It breaks compilation
+ // of programs with no tasks/SESEs/rblocks...
//XXXXXXXXXXXXXXXXXXXXXXXXX
//need to consider more
FlatNode nextFN=fmCallee.getNext(0);
- assert nextFN instanceof FlatSESEEnterNode;
- FlatSESEEnterNode calleeSESE=(FlatSESEEnterNode)nextFN;
- if(!calleeSESE.getIsLeafSESE()){
- rg.makeInaccessible( liveness.getLiveInTemps( fmContaining, fn ) );
- }
+ if( nextFN instanceof FlatSESEEnterNode ) {
+ FlatSESEEnterNode calleeSESE=(FlatSESEEnterNode)nextFN;
+ if(!calleeSESE.getIsLeafSESE()){
+ rg.makeInaccessible( liveness.getLiveInTemps( fmContaining, fn ) );
+ }
+ }
} break;
// 9th pass, ask disjoint analysis to compute reachability
// for objects that may cause heap conflicts so the most
// efficient method to deal with conflict can be computed
- // later
-
+ // later
disjointAnalysisReach =
new DisjointAnalysis(state, typeUtil, callGraph, liveness, arrayReferencees, sitesToFlag,
null, // don't do effects analysis again!