From: bdemsky Date: Sat, 10 Nov 2007 01:09:01 +0000 (+0000) Subject: bug fixes X-Git-Tag: preEdgeChange~375 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=f67a7527680842c7324943e110a8e18a7a54a778;p=IRC.git bug fixes --- diff --git a/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java b/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java index 4ded241a..68bdd683 100644 --- a/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java +++ b/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java @@ -53,19 +53,15 @@ public class TaskAnalysis { /* Adding the flags of the super class */ - if (cd.getSuper()!=null) { - ClassDescriptor superdesc=cd.getSuperDesc(); - - for(Iterator it_cflags=superdesc.getFlags();it_cflags.hasNext();) { + ClassDescriptor tmp=cd; + while(tmp!=null) { + for(Iterator it_cflags=tmp.getFlags();it_cflags.hasNext();) { FlagDescriptor fd = (FlagDescriptor)it_cflags.next(); vFlags.add(fd); } + tmp=tmp.getSuperDesc(); } - for(Iterator it_cflags=cd.getFlags();it_cflags.hasNext();) { - FlagDescriptor fd = (FlagDescriptor)it_cflags.next(); - vFlags.add(fd); - } if (vFlags.size()!=0) { flag=new FlagDescriptor[vFlags.size()]; diff --git a/Robust/src/ClassLibrary/String.java b/Robust/src/ClassLibrary/String.java index 1623a8e6..435f14d4 100644 --- a/Robust/src/ClassLibrary/String.java +++ b/Robust/src/ClassLibrary/String.java @@ -67,7 +67,7 @@ public class String { String str=new String(); if (beginIndex>this.count||endIndex>this.count||beginIndex>endIndex) { // FIXME - System.printString("Index error: "+this+" "+beginIndex+" "+endIndex+"\n"); + System.printString("Index error: "+beginIndex+" "+endIndex+" "+count+"\n"+this); } str.value=this.value; str.count=endIndex-beginIndex; diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index 91a96e57..7174ba91 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -2295,7 +2295,7 @@ public class BuildCode { } } else continue; - // if there is no optionals, there is no need to build the rest of the struct + // if there are no optionals, there is no need to build the rest of the struct output.println("struct optionaltaskdescriptor * otdarray"+cdtemp.getSafeSymbol()+"[]={"); c_otd = ((Hashtable)optionaltaskdescriptors.get(cdtemp)).values(); @@ -2371,7 +2371,7 @@ public class BuildCode { Set otdset=sa.getOptions(fs, ti); - output.print("struct optionaltaskdescriptor * optionaltaskfailure_"+ti.getTask().getSafeSymbol()+"_"+ti.getIndex()+"_array[] = {"); + output.print("struct optionaltaskdescriptor * optionaltaskfailure_FS"+fscounter+"_"+ti.getTask().getSafeSymbol()+"_"+ti.getIndex()+"_array[] = {"); boolean needcomma=false; for(Iterator otdit=ordertd(otdset).iterator();otdit.hasNext();) { OptionalTaskDescriptor otd=otdit.next(); @@ -2382,11 +2382,11 @@ public class BuildCode { } output.println("};"); - output.print("struct taskfailure taskfailure_"+ti.getTask().getSafeSymbol()+"_"+ti.getIndex()+" = {"); + output.print("struct taskfailure taskfailure_FS"+fscounter+"_"+ti.getTask().getSafeSymbol()+"_"+ti.getIndex()+" = {"); output.print("&task_"+ti.getTask().getSafeSymbol()+", "); output.print(ti.getIndex()+", "); output.print(otdset.size()+", "); - output.print("optionaltaskfailure_"+ti.getTask().getSafeSymbol()+"_"+ti.getIndex()+"_array"); + output.print("optionaltaskfailure_FS"+fscounter+"_"+ti.getTask().getSafeSymbol()+"_"+ti.getIndex()+"_array"); output.println("};"); } @@ -2403,7 +2403,7 @@ public class BuildCode { if (needcomma) output.print(", "); needcomma=true; - output.print("&taskfailure_"+ti.getTask().getSafeSymbol()+"_"+ti.getIndex()); + output.print("&taskfailure_FS"+fscounter+"_"+ti.getTask().getSafeSymbol()+"_"+ti.getIndex()); } output.println("};\n"); diff --git a/Robust/src/Runtime/task.c b/Robust/src/Runtime/task.c index 5dd4e889..96b78d8c 100644 --- a/Robust/src/Runtime/task.c +++ b/Robust/src/Runtime/task.c @@ -758,10 +758,10 @@ void enqueueoptional(struct ___Object___ * currobj, int numfailedfses, int * fai currindex=otd->index; } else if (currtask!=otd->task||currindex!=otd->index) break; - totallength+=otd->numenterflags; + totallength+=otd->numenterflags;//1 is to store the lengths } pw=currtask->descriptorarray[currindex]->queue; - enterflags=RUNMALLOC(totallength*sizeof(int)); + enterflags=RUNMALLOC((totallength+numenterflags)*sizeof(int)); numenterflags=j-start; offset=0; @@ -1193,14 +1193,6 @@ void executetasks() { #endif if(debugtask){ printf("ENTER %s count=%d\n",currtpd->task->name, (instaccum-instructioncount)); - { - int i; - printf("[%x]\n",currtpd); - for(i=0;inumParameters;i++) { - printf("%x ", currtpd->parameterArray[i]); - } - printf("\n"); - } ((void (*) (void **)) currtpd->task->taskptr)(taskpointerarray); printf("EXIT %s count=%d\n",currtpd->task->name, (instaccum-instructioncount)); } else @@ -1349,9 +1341,17 @@ void builditerators(struct taskdescriptor * task, int index, struct parameterwra while(ObjhasNext(&objit)) { struct ___Object___ * obj=(struct ___Object___ *)Objkey(&objit); struct ___Object___ * tagptr=obj->___tags___; + int nonfailed=Objdata4(&objit); + int numflags=Objdata3(&objit); + int flags=Objdata2(&objit); Objnext(&objit); printf(" Contains %lx\n", obj); printf(" flag=%d\n", obj->flag); +#ifdef OPTIONAL + printf(" flagsstored=%x\n",flags); + printf(" numflags=%d\n", numflags); + printf(" nonfailed=%d\n",nonfailed); +#endif if (tagptr==NULL) { } else if (tagptr->type==TAGTYPE) { printf(" tag=%lx\n",tagptr);