decouple ssjava code gen to prevent crashes from the analysis, so we can turn it...
authorjjenista <jjenista>
Sat, 22 Oct 2011 01:20:29 +0000 (01:20 +0000)
committerjjenista <jjenista>
Sat, 22 Oct 2011 01:20:29 +0000 (01:20 +0000)
Robust/src/Benchmarks/SSJava/EyeTracking/makefile
Robust/src/IR/Flat/BCXSSJavaInjectError.java
Robust/src/IR/Flat/BuildCode.java
Robust/src/IR/State.java
Robust/src/Main/Main.java
Robust/src/buildscript

index 328bc5dadec2e77bbfcc082c7ea0b22e9383fcef..dbdb323627d93b505561dbde5aaacdd7e406b39e 100644 (file)
@@ -3,7 +3,7 @@ BUILDSCRIPT=../../../buildscript
 PROGRAM=LEA
 SOURCE_FILES=LEA.java
 
-BSFLAGS= -32bit -ssjava -ssjava-inject-error 1 12345 -mainclass $(PROGRAM)  -heapsize-mb 1000   -debug -garbagestats -ssjavadebug -printlinenum -joptimize #-optimize
+BSFLAGS= -32bit -ssjava -mainclass $(PROGRAM)  -heapsize-mb 1000   -debug -garbagestats -ssjavadebug -printlinenum -joptimize -optimize
 
 default: $(PROGRAM)s.bin
 
index d71c9a208510b96a567025781b07e798787c21a8..e484111459f2bb194a52e21d54225742a6bf84ce 100644 (file)
@@ -20,6 +20,10 @@ public class BCXSSJavaInjectError implements BuildCodeExtension {
     this.buildCode = buildCode;
   }
 
+  public void additionalIncludesMethodsImplementation( PrintWriter outmethod ) { 
+    outmethod.println("#include <stdlib.h>");
+    outmethod.println("#include <stdio.h>");
+  }
 
   // the reason for errorInjectionInit is that some code (like static initializers
   // in the compiled program) actually run before the GENERATED MAIN runs!  Not the
@@ -80,7 +84,6 @@ public class BCXSSJavaInjectError implements BuildCodeExtension {
 
 
 
-  public void additionalIncludesMethodsImplementation( PrintWriter outmethod ){}
   public void printExtraArrayFields(PrintWriter outclassdefs){}
   public void outputTransCode(PrintWriter output){}
   public void buildCodeSetup(){}
index e5179e6229709c1e7a58861ab19f5e0d85f34016..9482735f03a93795ceeaf8af59c8b9a2a95775c8 100644 (file)
@@ -537,7 +537,7 @@ public class BuildCode {
     if (state.main!=null) {
       outmethod.println("#include <string.h>");
     }
-    if (state.SSJAVA){
+    if (state.SSJAVA_GENCODE_PREVENT_CRASHES){
       outmethod.println("#include <stdio.h>");
     }
     if (state.CONSCHECK) {
@@ -2769,7 +2769,7 @@ fldloop:
         }
       }
       // redirect to the global_defs_p structure
-      if(state.SSJAVA){
+      if(state.SSJAVA_GENCODE_PREVENT_CRASHES){
         if (ffn.getField().getType().isPtr()){
           output.println("if ( global_defs_p == NULL) {");
           output.println("printf(\"SSJAVA: Dereferencing NULL Pointer at file:%s, func:%s, line:%d \\n\", __FILE__, __func__, __LINE__);");
@@ -2794,7 +2794,7 @@ fldloop:
     } else if (ffn.getField().isEnum()) {
       // an Enum value, directly replace the field access as int
       output.println(generateTemp(fm, ffn.getDst()) + "=" + ffn.getField().enumValue() + ";");
-    } else if(state.SSJAVA){
+    } else if(state.SSJAVA_GENCODE_PREVENT_CRASHES){
       output.println("if (" + generateTemp(fm,ffn.getSrc()) + " == NULL) {");
       output.println("printf(\"SSJAVA: Dereferencing NULL Pointer at file:%s, func:%s, line:%d \\n\", __FILE__, __func__, __LINE__);");
       if(ffn.getDst().getType().isPrimitive()){
@@ -2868,7 +2868,7 @@ fldloop:
         }
       }
       // redirect to the global_defs_p structure
-      if(state.SSJAVA){
+      if(state.SSJAVA_GENCODE_PREVENT_CRASHES){
         if (fsfn.getField().getType().isPtr()) {
           output.println("if ( global_defs_p == NULL) {");
           output.println("printf(\"SSJAVA: Discard a write due to dereferencing NULL Pointer at file:%s, func:%s, line:%d \\n\", __FILE__, __func__, __LINE__);");
@@ -2901,7 +2901,7 @@ fldloop:
           output.println("global_defsprim_p->" +
                          fsfn.getField().getSafeSymbol()+"="+ generateTemp(fm,fsfn.getSrc())+";");
       }
-    } else if(state.SSJAVA){
+    } else if(state.SSJAVA_GENCODE_PREVENT_CRASHES){
       output.println("if (" + generateTemp(fm,fsfn.getDst()) + " == NULL) {");
       output.println("printf(\"SSJAVA: Dereferencing NULL Pointer at file:%s, func:%s, line:%d \\n\", __FILE__, __func__, __LINE__);");
       output.println("}else{");
@@ -2947,7 +2947,7 @@ fldloop:
     else
       type=elementtype.getSafeSymbol()+" ";
     
-    if(state.SSJAVA){
+    if(state.SSJAVA_GENCODE_PREVENT_CRASHES){
       output.println("if (" + generateTemp(fm,fen.getSrc())  + " == NULL) {");
       output.println("printf(\"SSJAVA: Dereferencing NULL Pointer at file:%s, func:%s, line:%d \\n\", __FILE__, __func__, __LINE__);");
       output.println("}else{");
@@ -2987,7 +2987,7 @@ fldloop:
     else
       type=elementtype.getSafeSymbol()+" ";
     
-    if(state.SSJAVA){
+    if(state.SSJAVA_GENCODE_PREVENT_CRASHES){
       output.println("if ("+generateTemp(fm,fsen.getDst())+"==NULL){");
       output.println("printf(\"SSJAVA: Dereferencing NULL Pointer at file:%s, func:%s, line:%d \\n\", __FILE__, __func__, __LINE__);");
       output.println("}else{");
@@ -3064,7 +3064,7 @@ fldloop:
           output.println(generateTemp(fm, fon.getDest())+" = ((unsigned int)"+generateTemp(fm, fon.getLeft())+")>>"+generateTemp(fm,fon.getRight())+";");
 
       } else {
-        if(state.SSJAVA && fon.getOp().getOp()==Operation.DIV){
+        if(state.SSJAVA_GENCODE_PREVENT_CRASHES && fon.getOp().getOp()==Operation.DIV){
           output.println("if (unlikely("+generateTemp(fm,fon.getRight())+"==0)){");
           output.println("printf(\"SSJAVA: Divided by zero at file:%s, func:%s, line:%d \\n\", __FILE__, __func__, __LINE__);");
           output.println(generateTemp(fm, fon.getDest())+" = 0;");
index c7d9a3d67ad3971379b41f8360944ba3e593fc92..7f7544822b6c7db1cdc0c9a42a91b7ae24224272 100644 (file)
@@ -143,6 +143,7 @@ public class State {
   //SSJava
   public boolean SSJAVA=false;
   public boolean SSJAVADEBUG=false;
+  public boolean SSJAVA_GENCODE_PREVENT_CRASHES=false;
   public boolean SSJAVA_INJECT_ERROR=false;
   public int     SSJAVA_INV_ERROR_PROB=0;
   public int     SSJAVA_ERROR_SEED=0;
index 019e7e401fec55f4ddf33ee21300c2fca6d18bfa..8ac20190f1b54a9400814f8f6daf6f1fff41b3b0 100644 (file)
@@ -364,16 +364,26 @@ 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;
+        state.SSJAVA_GENCODE_PREVENT_CRASHES = true;
+
       } else if (option.equals("-ssjavadebug")) {
         state.SSJAVADEBUG = 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")) {
index 8e1475afeba1754f42c4e8ec64b20232a4eac390..1cdf1d92e6afaa66b191978acd27589a77f11ff6 100755 (executable)
@@ -172,6 +172,7 @@ echo -help help
 tmpbuilddirectory="tmpbuilddirectory"
 JNI=false
 SSJAVA=false
+USE_SSJAVA_CLASSPATH=false
 SRCAFTERPP=false;
 COREPROF=false;
 NUMA=false;
@@ -666,6 +667,7 @@ EXTRAOPTIONS="$EXTRAOPTIONS -DOOO_DISABLE_TASKMEMPOOL"
 elif [[ $1 = '-ssjava' ]]
 then
 SSJAVA=true
+USE_SSJAVA_CLASSPATH=true
 JAVAOPTS="$JAVAOPTS -ssjava"
 
 elif [[ $1 = '-ssjavadebug' ]]
@@ -674,6 +676,7 @@ JAVAOPTS="$JAVAOPTS -ssjavadebug"
 
 elif [[ $1 = '-ssjava-inject-error' ]]
 then
+USE_SSJAVA_CLASSPATH=true
 JAVAOPTS="$JAVAOPTS -ssjava-inject-error $2 $3"
 shift
 shift
@@ -876,7 +879,7 @@ elif $MGCFLAG
   #base multicore gc files
   JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/MGC/ -classlibrary $ROBUSTROOT/ClassLibrary/MGC/gnu/"
 
-elif $SSJAVA
+elif $USE_SSJAVA_CLASSPATH
   then
   JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/SSJava"  
 
@@ -913,7 +916,7 @@ else
 fi
 
 # everyone gets this except ssjava!
-if ! $SSJAVA
+if ! $USE_SSJAVA_CLASSPATH
   then
   JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/ -classlibrary $ROBUSTROOT/ClassLibrary/gnu/"
 fi