From: bdemsky Date: Mon, 1 Nov 2004 01:51:23 +0000 (+0000) Subject: Various bug fixes related to the C switch. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=repair.git;a=commitdiff_plain;h=978b41331e71cf87272999f73a0c532b624fb156 Various bug fixes related to the C switch. --- diff --git a/Repair/RepairCompiler/MCC/CRuntime/SimpleHash.c b/Repair/RepairCompiler/MCC/CRuntime/SimpleHash.c index 187d70f..a14dd87 100755 --- a/Repair/RepairCompiler/MCC/CRuntime/SimpleHash.c +++ b/Repair/RepairCompiler/MCC/CRuntime/SimpleHash.c @@ -196,6 +196,10 @@ void freeSimpleHash(struct SimpleHash *thisvar) { free(thisvar); } +inline int SimpleHashcountset(struct SimpleHash * thisvar) { + return thisvar->numelements; +} + int SimpleHashfirstkey(struct SimpleHash *thisvar) { struct ArraySimple *ptr=thisvar->listhead; int index=0; @@ -592,3 +596,41 @@ int RepairHashgetrelation(struct RepairHash *thisvar, int relation, int rule, in } return 0; } + +inline struct SimpleIterator * noargallocateSimpleIterator() { + return (struct SimpleIterator*)malloc(sizeof(struct SimpleIterator)); +} + +inline struct SimpleIterator * allocateSimpleIterator(struct ArraySimple *start, struct ArraySimple *tl, int tlindex) { + struct SimpleIterator *thisvar=(struct SimpleIterator*)malloc(sizeof(struct SimpleIterator)); + thisvar->cur = start; + thisvar->index=0; + thisvar->tailindex=tlindex; + thisvar->tail=tl; + return thisvar; +} + +inline int hasNext(struct SimpleIterator *thisvar) { + if (thisvar->cur==thisvar->tail && + thisvar->index==thisvar->tailindex) + return 0; + while((thisvar->index==ARRAYSIZE)||!thisvar->cur->nodes[thisvar->index].inuse) { + if (thisvar->index==ARRAYSIZE) { + thisvar->index=0; + thisvar->cur=thisvar->cur->nextarray; + } else + thisvar->index++; + } + if (thisvar->cur->nodes[thisvar->index].inuse) + return 1; + else + return 0; +} + +inline int next(struct SimpleIterator *thisvar) { + return thisvar->cur->nodes[thisvar->index++].data; +} + +inline int key(struct SimpleIterator *thisvar) { + return thisvar->cur->nodes[thisvar->index].key; +} diff --git a/Repair/RepairCompiler/MCC/CRuntime/SimpleHash.h b/Repair/RepairCompiler/MCC/CRuntime/SimpleHash.h index 48439bc..a58d98f 100755 --- a/Repair/RepairCompiler/MCC/CRuntime/SimpleHash.h +++ b/Repair/RepairCompiler/MCC/CRuntime/SimpleHash.h @@ -106,10 +106,7 @@ struct SimpleHash { int tailindex; }; -inline int SimpleHashcountset(struct SimpleHash * thisvar) { - return thisvar->numelements; -} - +inline int SimpleHashcountset(struct SimpleHash * thisvar); /* SimpleHashExcepion *************************************************/ @@ -135,47 +132,20 @@ struct SimpleIterator { int index,tailindex; }; -inline struct SimpleIterator * noargallocateSimpleIterator() { - return (struct SimpleIterator*)malloc(sizeof(struct SimpleIterator)); -} - -inline struct SimpleIterator * allocateSimpleIterator(struct ArraySimple *start, struct ArraySimple *tl, int tlindex) { - struct SimpleIterator *thisvar=(struct SimpleIterator*)malloc(sizeof(struct SimpleIterator)); - thisvar->cur = start; - thisvar->index=0; - thisvar->tailindex=tlindex; - thisvar->tail=tl; - return thisvar; -} - -inline int hasNext(struct SimpleIterator *thisvar) { - if (thisvar->cur==thisvar->tail && - thisvar->index==thisvar->tailindex) - return 0; - while((thisvar->index==ARRAYSIZE)||!thisvar->cur->nodes[thisvar->index].inuse) { - if (thisvar->index==ARRAYSIZE) { - thisvar->index=0; - thisvar->cur=thisvar->cur->nextarray; - } else - thisvar->index++; - } - if (thisvar->cur->nodes[thisvar->index].inuse) - return 1; - else - return 0; -} - -inline int next(struct SimpleIterator *thisvar) { - return thisvar->cur->nodes[thisvar->index++].data; -} - -inline int key(struct SimpleIterator *thisvar) { - return thisvar->cur->nodes[thisvar->index].key; -} +inline struct SimpleIterator * noargallocateSimpleIterator(); + +inline struct SimpleIterator * allocateSimpleIterator(struct ArraySimple *start, struct ArraySimple *tl, int tlindex); + +inline int hasNext(struct SimpleIterator *thisvar); +inline int next(struct SimpleIterator *thisvar); + +inline int key(struct SimpleIterator *thisvar); struct RepairHashNode * allocateRepairHashNode(int setrelation, int rule, int lvalue, int rvalue, int data, int data2,int ismodify); + + struct RepairHashNode { struct RepairHashNode *next; struct RepairHashNode *lnext; diff --git a/Repair/RepairCompiler/MCC/IR/RepairGenerator.java b/Repair/RepairCompiler/MCC/IR/RepairGenerator.java index b0bd167..2ece344 100755 --- a/Repair/RepairCompiler/MCC/IR/RepairGenerator.java +++ b/Repair/RepairCompiler/MCC/IR/RepairGenerator.java @@ -303,6 +303,7 @@ public class RepairGenerator { private void generate_stateobject() { CodeWriter crhead = new StandardCodeWriter(outputhead); + CodeWriter craux = new StandardCodeWriter(outputaux); crhead.outputline("struct "+name+"_state {"); Iterator globals=state.stGlobals.descriptors(); while (globals.hasNext()) { @@ -310,6 +311,18 @@ public class RepairGenerator { crhead.outputline(vd.getType().getGenerateType().getSafeSymbol()+" "+vd.getSafeSymbol()+";"); } crhead.outputline("};"); + crhead.outputline("struct "+name+"_state * allocate"+name+"_state();"); + craux.outputline("struct "+name+"_state * allocate"+name+"_state()"); + craux.startblock(); + craux.outputline("return (struct "+name+"_state *) malloc(sizeof(struct "+name+"_state));"); + craux.endblock(); + + crhead.outputline("void free"+name+"_state(struct "+name+"_state *);"); + craux.outputline("void free"+name+"_state(struct "+name+"_state * thisvar)"); + craux.startblock(); + craux.outputline("free(thisvar);"); + craux.endblock(); + crhead.outputline("void "+name+"_statecomputesizes(struct "+name+"_state * ,int *,int **);"); crhead.outputline("void "+name+"_staterecomputesizes(struct "+name+"_state *);"); } @@ -435,7 +448,7 @@ public class RepairGenerator { } } } - craux.outputline("struct "+ name+"* "+name+"()"); + craux.outputline("struct "+ name+"* allocate"+name+"()"); craux.startblock(); craux.outputline("/* creating hashtables */");