Add Class object so that we can implement getClass() and can have class lock for...
[IRC.git] / Robust / src / Main / Main.java
index 33e717ba5205858bbcebb8d4d1fa066a308ec56b..d33533db08962315cba8604aeb807bbf5f1442da 100644 (file)
@@ -15,6 +15,7 @@ import IR.Tree.ParseNode;
 import IR.Tree.BuildIR;
 import IR.Tree.SemanticCheck;
 import IR.Flat.BuildCodeMultiCore;
+import IR.Flat.BuildCodeMGC;
 import IR.Flat.BuildFlat;
 import IR.Flat.BuildCode;
 import IR.Flat.Inliner;
@@ -147,7 +148,9 @@ public class Main {
        state.MULTICORE=true;
       else if (option.equals("-multicoregc"))
         state.MULTICOREGC=true;
-      else if (option.equals("-ownership"))
+      else if (option.equals("-mgc")) {
+        state.MGC = true;
+      } else if (option.equals("-ownership"))
        state.OWNERSHIP=true;
       else if (option.equals("-ownallocdepth")) {
        state.OWNERSHIPALLOCDEPTH=Integer.parseInt(args[++i]);
@@ -412,7 +415,7 @@ public class Main {
     if (state.TASK) {
       sc.getClass("TagDescriptor");
     }
-    if (state.THREAD||state.DSM||state.SINGLETM) {
+    if (state.THREAD||state.DSM||state.SINGLETM||state.MGC) {
       sc.getClass("Thread");
     }
 
@@ -569,7 +572,7 @@ public class Main {
        CallGraph callGraph = new CallGraph(state);
        Liveness liveness = new Liveness();
         ArrayReferencees ar = new ArrayReferencees(state);
-       OwnershipAnalysis oa = new OwnershipAnalysis(state,
+       OwnershipAnalysis oa = null;/*new OwnershipAnalysis(state,
                                                     tu,
                                                     callGraph,
                                                  liveness,
@@ -577,7 +580,7 @@ public class Main {
                                                     state.OWNERSHIPALLOCDEPTH,
                                                     state.OWNERSHIPWRITEDOTS,
                                                     state.OWNERSHIPWRITEALL,
-                                                    state.OWNERSHIPALIASFILE);
+                                                    state.OWNERSHIPALIASFILE);*/
        
        // synthesis a layout according to target multicore processor
        MCImplSynthesis mcImplSynthesis = new MCImplSynthesis(state,
@@ -617,6 +620,22 @@ public class Main {
        }
       }
     }
+    
+    if (state.MGC) {
+      // generate multicore codes
+      if(state.MULTICORE) {
+        BuildCodeMGC bcmgc=new BuildCodeMGC(state,
+                                            bf.getMap(),
+                                            tu,
+                                            sa,
+                                            state.CORENUM,
+                                            state.CORENUM,
+                                            state.CORENUM4GC,
+                                            pa);
+        bcmgc.buildCode();
+      }
+    }
+  
     if(!state.MULTICORE) {
       if (state.DSM||state.SINGLETM) {
        CallGraph callgraph=new CallGraph(state);