changes to MGC class library
[IRC.git] / Robust / src / Analysis / FlatIRGraph / FlatIRGraph.java
index 7211dd9905c95a20e92a404dbb729c993c62914c..8b113cf9e1d700b6337d56eece71e008d5188046 100644 (file)
@@ -41,12 +41,19 @@ public class FlatIRGraph {
       for(Iterator it_methods=cd.getMethods(); it_methods.hasNext(); ) {
         MethodDescriptor md = (MethodDescriptor)it_methods.next();
         FlatMethod fm = state.getMethodFlat(md);
-        writeFlatIRGraph(fm,cd.getSymbol()+"."+md.getSymbol());
+
+        // make sure the graph name reflects the method signature so
+        // overloaded methods don't clobber one another
+        String graphName = cd.getSymbol()+"."+md.getSymbol();        
+        for (int i = 0; i < fm.numParameters(); ++i) {
+          graphName += fm.getParameter(i).getSymbol();
+        }
+        writeFlatIRGraph(fm, graphName);
       }
     }
   }
-
-  private void writeFlatIRGraph(FlatMethod fm, String graphname) throws java.io.IOException {
+  
+  public void writeFlatIRGraph(FlatMethod fm, String graphname) throws java.io.IOException {
     // give every node in the flat IR graph a unique label
     // so a human being can inspect the graph and verify
     // correctness
@@ -58,7 +65,7 @@ public class FlatIRGraph {
     // take symbols out of graphname that cause dot to fail
     graphname = graphname.replaceAll("[\\W]", "");
 
-    flatbw=new BufferedWriter(new FileWriter(graphname+"_flatIRGraph.dot") );
+    flatbw=new BufferedWriter(new FileWriter("FLATIR_"+graphname+".dot") );
     flatbw.write("digraph "+graphname+" {\n");
 
     visited=new HashSet<FlatNode>();