1) Bug fix
authorbdemsky <bdemsky>
Wed, 1 Nov 2006 21:44:28 +0000 (21:44 +0000)
committerbdemsky <bdemsky>
Wed, 1 Nov 2006 21:44:28 +0000 (21:44 +0000)
2) Debug flag for tasks...has the compiler insert task enter/exit messages

Robust/src/IR/Flat/BuildCode.java
Robust/src/IR/Flat/BuildFlat.java
Robust/src/IR/State.java
Robust/src/Main/Main.java
Robust/src/buildscripttaskdebug [new file with mode: 0755]

index e2f9a9e2602a0185fabbc64ccf64a2c12705fd9d..809fd147b9dd7bcb85713245acd80c52d22d576a 100644 (file)
@@ -848,6 +848,8 @@ public class BuildCode {
                }
            }
        }
+       if (task!=null&&state.TASKDEBUG)
+           output.println("printf(\"ENTER "+task.getSymbol()+"\\n\");");
 
        //Do the actual code generation
        tovisit=new HashSet();
@@ -865,6 +867,8 @@ public class BuildCode {
                output.print("   ");
                generateFlatNode(fm, current_node, output);
                if (current_node.kind()!=FKind.FlatReturnNode) {
+                   if (task!=null&&state.TASKDEBUG)
+                       output.println("printf(\"EXIT "+task.getSymbol()+"\\n\");");
                    output.println("   return;");
                }
                current_node=null;
@@ -890,6 +894,8 @@ public class BuildCode {
                    current_node=current_node.getNext(0);
            } else throw new Error();
        }
+
+
        output.println("}\n\n");
     }
 
@@ -1191,6 +1197,9 @@ public class BuildCode {
     }
 
     private void generateFlatReturnNode(FlatMethod fm, FlatReturnNode frn, PrintWriter output) {
+       
+       if (fm.getTask()!=null&&state.TASKDEBUG)
+           output.println("printf(\"EXIT "+fm.getTask().getSymbol()+"\\n\");");
        if (frn.getReturnTemp()!=null)
            output.println("return "+generateTemp(fm, frn.getReturnTemp())+";");
        else
index 17e988f281f1a8eb6c9d670f10b5f501876677b5..dde06ea480c898708d6d892e72559b954c8ff850 100644 (file)
@@ -737,7 +737,9 @@ public class BuildFlat {
        updateFlagActionNode(ffan, ten.getFlagEffects());
        NodePair fcn=flattenConstraintCheck(ten.getChecks());
        ffan.addNext(fcn.getBegin());
-       return new NodePair(ffan, fcn.getEnd());
+       FlatReturnNode rnflat=new FlatReturnNode(null);
+       fcn.getEnd().addNext(rnflat);
+       return new NodePair(ffan, rnflat);
     }
 
     private NodePair flattenConstraintCheck(Vector ccs) {
index a40ed70d3b675d649db6dff2b39baa82d6000fbd..4797a6bef03541cfa81636c0c854d4f502d0c262 100644 (file)
@@ -22,6 +22,7 @@ public class State {
     /** Boolean flag which indicates whether compiler is compiling a task-based
      * program. */
     public boolean TASK;
+    public boolean TASKDEBUG;
     public String structfile;
     public String main;
     public boolean CONSCHECK=false;
index 75487a3f315006a66b1bdb6df308c07343eebae5..9ccb839e3f9e0a1aa3fe9c1ae99cc9c4fa069178 100644 (file)
@@ -33,6 +33,8 @@ public class Main {
              state.CONSCHECK=true;
          else if (option.equals("-task"))
              state.TASK=true;
+         else if (option.equals("-taskdebug"))
+             state.TASKDEBUG=true;
          else if (option.equals("-help")) {
              System.out.println("-classlibrary classlibrarydirectory -- directory where classlibrary is located");
              System.out.println("-dir outputdirectory -- output code in outputdirectory");
diff --git a/Robust/src/buildscripttaskdebug b/Robust/src/buildscripttaskdebug
new file mode 100755 (executable)
index 0000000..ab704ab
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+ROBUSTROOT=~/research/Robust/src
+MAINFILE=$1
+shift
+mkdir tmpbuilddirectory
+java -cp $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main -classlibrary $ROBUSTROOT/ClassLibrary/ -dir tmpbuilddirectory -struct $MAINFILE -task -taskdebug $@
+#gcc -I$ROBUSTROOT/Runtime -Itmpbuilddirectory -O0 -DTASK -g tmpbuilddirectory/methods.c tmpbuilddirectory/taskdefs.c $ROBUSTROOT/Runtime/runtime.c $ROBUSTROOT/Runtime/Queue.c $ROBUSTROOT/Runtime/SimpleHash.c $ROBUSTROOT/Runtime/checkpoint.c $ROBUSTROOT/Runtime/GenericHashtable.c -o $MAINFILE.bin
+gcc -I$ROBUSTROOT/Runtime -I. -IRuntime/include -Itmpbuilddirectory -O0 -DBOEHM_GC -LRuntime/lib/ -lgc -DTASK -DDEBUG -g tmpbuilddirectory/methods.c tmpbuilddirectory/taskdefs.c $ROBUSTROOT/Runtime/runtime.c $ROBUSTROOT/Runtime/file.c $ROBUSTROOT/Runtime/Queue.c $ROBUSTROOT/Runtime/SimpleHash.c $ROBUSTROOT/Runtime/checkpoint.c $ROBUSTROOT/Runtime/GenericHashtable.c -o $MAINFILE.bin
\ No newline at end of file