}
}
}
+ if (task!=null&&state.TASKDEBUG)
+ output.println("printf(\"ENTER "+task.getSymbol()+"\\n\");");
//Do the actual code generation
tovisit=new HashSet();
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;
current_node=current_node.getNext(0);
} else throw new Error();
}
+
+
output.println("}\n\n");
}
}
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
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) {
/** 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;
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");
--- /dev/null
+#!/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