changes.
[IRC.git] / Robust / src / Main / Main.java
index 8f30c5a6c103159abaa9bf59043c1eca5752fad9..2ec01a630eb17ea5cd3a3775a1e171616182a618 100644 (file)
@@ -156,6 +156,8 @@ public class Main {
         state.MULTICORE=true;
       else if (option.equals("-multicoregc"))
         state.MULTICOREGC=true;
+      else if (option.equals("-pmc"))
+        state.PMC=true;
       else if (option.equals("-mgc")) {
         state.MGC = true;
       } else if (option.equals("-objectlockdebug")) {
@@ -289,6 +291,30 @@ public class Main {
         state.POINTSTO_CHECK_V_RUNTIME = true;
 
 
+      } else if( option.equals("-do-definite-reach-analysis") ) {
+        state.DO_DEFINITE_REACH_ANALYSIS = true;
+
+
+      } else if( option.equals("-disjoint-disable-global-sweep") ) {
+        state.DISJOINT_USE_GLOBAL_SWEEP = false;
+
+      } else if( option.equals("-disjoint-disable-strong-update") ) {
+        state.DISJOINT_USE_STRONG_UPDATE = false;
+
+      } else if( option.equals("-disjoint-disable-predicates") ) {
+        state.DISJOINT_USE_PREDICATES = false;
+
+      } else if( option.equals("-disjoint-summarize-per-class") ) {
+        state.DISJOINT_SUMMARIZE_PER_CLASS = true;
+
+
+      } else if( option.equals("-disjoint-count-visits") ) {
+        state.DISJOINT_COUNT_VISITS = true;
+
+      } else if( option.equals("-disjoint-count-graph-elements") ) {
+        state.DISJOINT_COUNT_GRAPH_ELEMENTS = true;
+        state.DISJOINT_COUNT_GRAPH_ELEMENTS_FILE = args[++i];
+
       } else if (option.equals("-optional"))
         state.OPTIONAL=true;
       else if (option.equals("-optimize"))
@@ -358,9 +384,28 @@ public class Main {
         state.KEEP_RG_FOR_ALL_PROGRAM_POINTS=true;
       } else if (option.equals("-nostalltr")) {
         state.NOSTALLTR = true;
+
       } else if (option.equals("-ssjava")) {
         state.SSJAVA = true;
-      } else if (option.equals("-printlinenum")) {
+        state.SSJAVA_GENCODE_PREVENT_CRASHES = true;
+
+      } else if (option.equals("-ssjavadebug")) {
+        state.SSJAVADEBUG = true;
+      } else if (option.equals("-ssjavainfer")) {
+        state.SSJAVAINFER= true;
+      } else if( option.equals( "-ssjava-inject-error" ) ) {
+        state.SSJAVA_GENCODE_PREVENT_CRASHES = true;
+        state.SSJAVA_INJECT_ERROR   = true;
+        state.SSJAVA_INV_ERROR_PROB = Integer.parseInt( args[++i] );
+        state.SSJAVA_ERROR_SEED     = Integer.parseInt( args[++i] );
+
+        // special case, if the inverse prob is 0, turn off errors
+        if( state.SSJAVA_INV_ERROR_PROB == 0 ) {
+          state.SSJAVA_INJECT_ERROR = false;
+        }
+
+
+      }else if (option.equals("-printlinenum")) {
         state.LINENUM=true;
       } else if (option.equals("-help")) {
         System.out.println("-classlibrary classlibrarydirectory -- directory where classlibrary is located");
@@ -421,7 +466,7 @@ public class Main {
     State.logEvent("Done Parsing Commands");
     System.out.println("Classpath: "+state.classpath);
 
-    SSJavaAnalysis ssjava=new SSJavaAnalysis(state);
+    
 
     TypeUtil tu;
     BuildFlat bf;
@@ -479,6 +524,7 @@ public class Main {
     CallGraph callgraph=jb!=null?jb:(state.TASK?new BaseCallGraph(state, tu):new JavaCallGraph(state, tu));
 
     // SSJava
+    SSJavaAnalysis ssjava=new SSJavaAnalysis(state,tu,bf,callgraph);
     if(state.SSJAVA) {
       ssjava.doCheck();
       State.logEvent("Done SSJava Checking");
@@ -505,8 +551,12 @@ public class Main {
             continue;
           cp.optimize(fm);
           dc.optimize(fm);
-          if (!state.NOLOOP)
+          if (!state.NOLOOP){            
+            lo.analyze(fm);
             lo.optimize(fm);
+          }
+            
+          
           cp.optimize(fm);
           dc.optimize(fm);
           lcse.doAnalysis(fm);
@@ -518,6 +568,7 @@ public class Main {
         }
       }
       State.logEvent("Done Optimizing");
+      
     }
 
     if (state.FLATIRGRAPH) {
@@ -685,6 +736,11 @@ public class Main {
         bc.registerExtension( bcx );
       }
 
+      if( state.SSJAVA_INJECT_ERROR ) {
+        BCXSSJavaInjectError bcx = new BCXSSJavaInjectError( state, bc );
+        bc.registerExtension( bcx );
+      }
+
       bc.buildCode();
       State.logEvent("Done With BuildCode");
 
@@ -714,7 +770,7 @@ public class Main {
   public static ParseNode readSourceFile(State state, String sourcefile) {
     try {
       Reader fr= new BufferedReader(new FileReader(sourcefile));
-      Lex.Lexer l = new Lex.Lexer(fr, state.TASK);
+      Lex.Lexer l = new Lex.Lexer(fr, state.TASK, state.DSM);
       java_cup.runtime.lr_parser g;
       g = new Parse.Parser(l);
       ParseNode p=null;