From: bdemsky Date: Thu, 7 Sep 2006 23:40:05 +0000 (+0000) Subject: checking in changes X-Git-Tag: preEdgeChange~832 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=cacaf39ca7d94217f19f4944229a3a331bb96e02;p=IRC.git checking in changes --- diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index 4b680901..6f906751 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -158,6 +158,9 @@ public class BuildCode { outmethod.println("#include \"methodheaders.h\""); outmethod.println("#include \"virtualtable.h\""); outmethod.println("#include "); + if (state.CONSCHECK) { + outmethod.println("#include \"checkers.h\""); + } outclassdefs.println("extern int classsize[];"); outclassdefs.println("extern int * pointerarray[];"); @@ -920,14 +923,29 @@ public class BuildCode { } private void generateFlatCheckNode(FlatMethod fm, FlatCheckNode fcn, PrintWriter output) { - output.print(fcn.getSpec()+"("); - TempDescriptor[] temps=fcn.getTemps(); - for(int i=0;i"+vars[i]+"=(int)"+generateTemp(fm, temps[i])+";"); + } + + output.println("if (doanalysis"+specname+"("+varname+")) {"); + output.println("free"+specname+"_state("+varname+");"); + output.println("} else {"); + output.println("free"+specname+"_state("+varname+");"); + output.println("}"); + + output.println("}"); } - output.println(");"); } private void generateFlatCall(FlatMethod fm, FlatCall fc, PrintWriter output) { diff --git a/Robust/src/IR/Flat/BuildFlat.java b/Robust/src/IR/Flat/BuildFlat.java index f9c3c8e2..17e988f2 100644 --- a/Robust/src/IR/Flat/BuildFlat.java +++ b/Robust/src/IR/Flat/BuildFlat.java @@ -748,17 +748,19 @@ public class BuildFlat { for(int i=0;i0) str+=","; + str+=getVar(i)+" : "; str+=getArg(i).printNode(0); } return str+")"; diff --git a/Robust/src/Main/Main.java b/Robust/src/Main/Main.java index f11cd0e6..f5c2c6b8 100644 --- a/Robust/src/Main/Main.java +++ b/Robust/src/Main/Main.java @@ -29,6 +29,8 @@ public class Main { state.main=args[++i]; else if (option.equals("-struct")) state.structfile=args[++i]; + else if (option.equals("-conscheck")) + state.CONSCHECK=true; else if (option.equals("-task")) state.TASK=true; else if (option.equals("-help")) { @@ -38,6 +40,7 @@ public class Main { System.out.println("-mainclass -- main function to call"); System.out.println("-precise -- use precise garbage collection"); + System.out.println("-conscheck -- turn on consistency checking"); System.out.println("-help -- print out help"); System.exit(0); } else { diff --git a/Robust/src/Parse/java14.cup b/Robust/src/Parse/java14.cup index f86471fb..ad2e6a92 100644 --- a/Robust/src/Parse/java14.cup +++ b/Robust/src/Parse/java14.cup @@ -196,6 +196,7 @@ non terminal ParseNode return_statement; // 19.12) Expressions non terminal ParseNode primary, primary_no_new_array; non terminal ParseNode class_instance_creation_expression; +non terminal ParseNode cons_argument_list_opt, cons_argument_list; non terminal ParseNode argument_list_opt, argument_list; //non terminal ParseNode array_creation_init; non terminal ParseNode array_creation_uninit; @@ -337,7 +338,7 @@ cons_checks ::= cons_check:cc {: RESULT=ccs; :}; -cons_check ::= IDENTIFIER:name LPAREN argument_list_opt:args RPAREN {: +cons_check ::= IDENTIFIER:name LPAREN cons_argument_list_opt:args RPAREN {: ParseNode pn=new ParseNode("cons_check"); pn.addChild("name").addChild("identifier").addChild(name); pn.addChild(args); @@ -1217,10 +1218,33 @@ class_instance_creation_expression ::= // | name DOT NEW IDENTIFIER // LPAREN argument_list_opt RPAREN class_body ; +cons_argument_list_opt ::= + {: RESULT=new ParseNode("empty"); :} + | argument_list:args {: RESULT=args; :} + ; + +cons_argument_list ::= + IDENTIFIER:id COLON expression:exp {: + ParseNode pn=new ParseNode("cons_argument_list"); + ParseNode pnarg=pn.addChild("binding"); + pnarg.addChild("var").addChild(id); + pnarg.addChild("exp").addChild(exp); + RESULT=pn; + :} + | argument_list:list COMMA IDENTIFIER:id COLON expression:exp {: + ParseNode pnarg=new ParseNode("binding"); + pnarg.addChild("var").addChild(id); + pnarg.addChild("exp").addChild(exp); + list.addChild(pnarg); + RESULT=list; + :} + ; + argument_list_opt ::= {: RESULT=new ParseNode("empty"); :} | argument_list:args {: RESULT=args; :} ; + argument_list ::= expression:exp {: ParseNode pn=new ParseNode("argument_list"); diff --git a/Robust/src/Runtime/runtime.c b/Robust/src/Runtime/runtime.c index a97cf4bb..818138de 100644 --- a/Robust/src/Runtime/runtime.c +++ b/Robust/src/Runtime/runtime.c @@ -18,6 +18,9 @@ jmp_buf error_handler; #include "Queue.h" #include "SimpleHash.h" #include "GenericHashtable.h" +#ifdef CONSCHECK +#include "initialize.h" +#endif struct Queue * activetasks; struct parameterwrapper * objectqueues[NUMCLASSES]; @@ -25,6 +28,9 @@ struct genhashtable * failedtasks; int main(int argc, char **argv) { GC_init(); +#ifdef CONSCHECK + initializemmap(); +#endif { int i; /* Allocate startup object */ diff --git a/Robust/src/buildscriptrepair b/Robust/src/buildscriptrepair index 0d365a9f..1caf13f2 100755 --- a/Robust/src/buildscriptrepair +++ b/Robust/src/buildscriptrepair @@ -18,8 +18,8 @@ shift mkdir $BUILDDIR java -cp $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main -classlibrary \ -$ROBUSTROOT/ClassLibrary/ -dir $BUILDDIR -struct $MAINFILE -struct \ -structfile -task $@ +$ROBUSTROOT/ClassLibrary/ -dir $BUILDDIR -struct $MAINFILE -conscheck \ +-struct structfile -task $@ # Build all of the consistency specs @@ -27,6 +27,7 @@ cd $SPECDIR mkdir $BUILDDIR/specdir cp $REPAIRROOT/MCC/CRuntime/* $BUILDDIR/specdir +echo > $BUILDDIR/specs # compile specs into C code for i in * do @@ -43,18 +44,20 @@ done cd $BUILDDIR/specdir ./buildrobust +echo > $BUILDDIR/checkers.h for i in `cat $BUILDDIR/specs` do gcc -O0 -g -c $i\_aux.c +echo \#include \"specdir\/$i\_aux.h\" >> $BUILDDIR/checkers.h done #build and link everything -cd $CURDIR -gcc -I$ROBUSTROOT/Runtime -I. -IRuntime/include -Itmpbuilddirectory \ --O0 -DBOEHM_GC -LRuntime/lib/ -lgc -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 $BUILDDIR/specdir/*.o \ --o $MAINFILE.bin +cd $CURDIR gcc -I$ROBUSTROOT/Runtime -I. -I$BUILDDIR/specdir \ +-IRuntime/include -I$BUILDDIR -O0 -DBOEHM_GC -DCONSCHECK \ +-LRuntime/lib/ -lgc -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 $BUILDDIR/specdir/*.o -o \ +$MAINFILE.bin