changes to allow abortting a transaction early
authorbdemsky <bdemsky>
Fri, 6 Feb 2009 08:10:19 +0000 (08:10 +0000)
committerbdemsky <bdemsky>
Fri, 6 Feb 2009 08:10:19 +0000 (08:10 +0000)
Robust/src/IR/Flat/BuildCode.java
Robust/src/IR/State.java
Robust/src/IR/Tree/SemanticCheck.java
Robust/src/Main/Main.java
Robust/src/buildscript

index 6cc1e6c906f7b70227ad4ad72ad29ac8dda8b072..92e17331fc74a01e11dc3064b29c76673421b700 100644 (file)
@@ -124,6 +124,8 @@ public class BuildCode {
     outmethodheader.println("#include \"structdefs.h\"");
     if (state.DSM)
       outmethodheader.println("#include \"dstm.h\"");
+    if (state.ABORTREADERS)
+      outmethodheader.println("#include \"abortreaders.h\"");
 
     /* Output Structures */
     outputStructs(outstructs);
@@ -1725,6 +1727,7 @@ public class BuildCode {
       TempDescriptor tmp=tmpit.next();
       output.println(generateTemp(fm, backuptable.get(tmp),lb)+"="+generateTemp(fm,tmp,lb)+";");
     }
+    
     output.println("goto transstart"+faen.getIdentifier()+";");
 
     /******* Print code to retry aborted transaction *******/
@@ -1750,6 +1753,11 @@ public class BuildCode {
 
     output.println("transstart"+faen.getIdentifier()+":");
     output.println("trans=transStart();");
+    
+    if (state.ABORTREADERS) {
+      output.println("if (setjmp(trans->aborttrans))");
+      output.println("  goto transretry"+faen.getIdentifier()+":");
+    }
   }
 
   public void generateFlatAtomicExitNode(FlatMethod fm,  LocalityBinding lb, FlatAtomicExitNode faen, PrintWriter output) {
index 3094fc21541d757eb418665ec180f84370bb59fe..36ed57ba2bc559e04e92a3fc5a57b8cc79d31000 100644 (file)
@@ -72,6 +72,7 @@ public class State {
   public static boolean PRINTFLAT=false;
   public static boolean PRINTSCHEDULING=false;
   public static boolean PRINTSCHEDULESIM=false;
+  public static boolean ABORTREADERS=false;
   public int CORENUM = 1;
   public String structfile;
   public String main;
index d8c5d5304191684a00c668c0ffd91ebbeb364f9a..936ceefd7bb960bd9094047acf1fa8b8d3bc99a6 100644 (file)
@@ -474,7 +474,7 @@ public class SemanticCheck {
 
     if (td!=null)
       if (!typeutil.isSuperorType(td,ln.getType()))
-       throw new Error("Field node returns "+ln.getType()+", but need "+td);
+       throw new Error("Field node returns "+ln.getType()+", but need "+td+" in "+md);
   }
 
   void checkNameNode(Descriptor md, SymbolTable nametable, NameNode nn, TypeDescriptor td) {
index e976f9e4a00ab3aac5988060efbf7999aedf32cb..a17807ec2f93561a2efb9d55af0e2790c2329485 100644 (file)
@@ -87,6 +87,8 @@ public class Main {
        state.CONSCHECK=true;
       else if (option.equals("-task"))
        state.TASK=true;
+      else if (option.equals("-abortreaders"))
+       state.ABORTREADERS=true;
       else if (option.equals("-taskstate"))
        state.TASKSTATE=true;
       else if (option.equals("-tagstate"))
@@ -138,6 +140,7 @@ public class Main {
        System.out.println("-struct structfile -- output structure declarations for repair tool");
        System.out.println("-mainclass -- main function to call");
        System.out.println("-dsm -- distributed shared memory support");
+       System.out.println("-abortreaders -- abort readers");
        System.out.println("-precise -- use precise garbage collection");
        System.out.println("-conscheck -- turn on consistency checking");
        System.out.println("-task -- compiler for tasks");
index 84650129bea7d7d1041c83f9126fafba696340cc..bd4928ed58a52a641033fc7201b9c638175bae31 100755 (executable)
@@ -3,6 +3,7 @@
 printhelp() {
 echo -robustroot set up the ROBUSTROOT to directory other than default one
 echo -dsm distributed shared memory
+echo -abortreaders abort readers immediately
 echo -trueprob double - probabiltiy of true branch
 echo -dsmcaching -enable caching in dsm runtime
 echo -mac distributed shared memory mac support
@@ -95,6 +96,10 @@ exit
 elif [[ $1 = '-justanalyze' ]]
 then
 EXITAFTERANALYSIS=true
+elif [[ $1 = '-abortreaders' ]]
+then
+EXTRAOPTIONS="$EXTRAOPTIONS -DABORTREADERS"
+JAVAOPTS="$JAVAOPTS -abortreaders"
 elif [[ $1 = '-robustroot' ]]
 then
 ROBUSTROOT="$2"
@@ -281,7 +286,7 @@ else
 if ! $NOJAVA
 then
 if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx600m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main -classlibrary \
-$ROBUSTROOT/ClassLibrary/ -dir $BUILDDIR -precise \
+$ROBUSTROOT/ClassLibrary/ -dir $BUILDDIR  \
 $JAVAOPTS $SRCFILES
 then exit $?
 fi