checked in bug fixes...
authorbdemsky <bdemsky>
Mon, 21 Aug 2006 20:37:41 +0000 (20:37 +0000)
committerbdemsky <bdemsky>
Mon, 21 Aug 2006 20:37:41 +0000 (20:37 +0000)
Robust/src/Runtime/runtime.c
Robust/src/Runtime/runtime.h
Robust/src/Tests/TaskExample.java
Robust/src/buildscripttask

index 616754fc403fb3c8061d0c343bc1e0ca63b69755..818c6ac7da0914f9623ac8bb43f650392585f893 100644 (file)
@@ -54,21 +54,24 @@ void flagorand(void * ptr, int ormask, int andmask) {
     struct parameterwrapper * parameter=objectqueues[((int *)ptr)[0]];
     int i;
     flagptr=NULL;
-    for(i=0;i<parameter->numberofterms;i++) {
-      int andmask=parameter->intarray[i*2];
-      int checkmask=parameter->intarray[i*2+1];
-      if ((flag&andmask)==checkmask) {
-       struct QueueItem * qitem=addNewItem(parameter->queue, ptr);
-       if (flagptr==NULL) {
-         flagptr=qitem;
-         tmpptr=flagptr;
-       } else {
-         tmpptr->nextqueue=qitem;
-         tmpptr=qitem;
+    while(parameter!=NULL) {
+      for(i=0;i<parameter->numberofterms;i++) {
+       int andmask=parameter->intarray[i*2];
+       int checkmask=parameter->intarray[i*2+1];
+       if ((flag&andmask)==checkmask) {
+         struct QueueItem * qitem=addNewItem(parameter->queue, ptr);
+         if (flagptr==NULL) {
+           flagptr=qitem;
+           tmpptr=flagptr;
+         } else {
+           tmpptr->nextqueue=qitem;
+           tmpptr=qitem;
+         }
+         SimpleHashadd(activetasks, (int)parameter->task, (int)parameter->task);
+         break;
        }
-       SimpleHashadd(activetasks, (int)parameter->task, (int)parameter->task);
-       break;
       }
+      parameter=parameter->next;
     }
     ((struct QueueItem **)ptr)[2]=flagptr;
   }
@@ -76,13 +79,10 @@ void flagorand(void * ptr, int ormask, int andmask) {
 
 void executetasks() {
   void * pointerarray[MAXTASKPARAMS];
-  while(1) {
   newtask:
-    {
+  while(SimpleHashcountset(activetasks)!=0) {
     struct taskdescriptor * task=(struct taskdescriptor *) SimpleHashfirstkey(activetasks);
     int i;
-    if (task==NULL)
-      break;
     for(i=0;i<task->numParameters;i++) {
       struct parameterwrapper * parameter=(struct parameterwrapper *) task->descriptorarray[i]->queue;
       struct Queue * queue=parameter->queue;
@@ -93,7 +93,6 @@ void executetasks() {
       pointerarray[i]=getTail(queue)->objectptr;
     }
     ((void (*) (void **)) task->taskptr)(pointerarray);
-    }
   }
 }
 
@@ -114,7 +113,7 @@ void processtasks() {
       parameter->intarray=param->intarray;
       parameter->task=task;
       /* Link new queue in */
-      while(*ptr!=NULL)
+      while((*ptr)!=NULL)
        ptr=&((*ptr)->next);
       (*ptr)=parameter;
     }
index 9e5dc81c220d2aae6d2090d6ce8c2429b2a9ebb3..7bbc2de141468a6c6184595c862bd8954e492101 100644 (file)
@@ -21,7 +21,7 @@ struct parameterwrapper {
   int numberofterms;
   int * intarray;
   struct taskdescriptor * task;
-}
+};
 #endif
 
 #endif
index 94a6c4c16e67baf8868b130b82718e586d917db6..d271abe8fda635528a4ce7db98b5e91acffb4fa6 100644 (file)
@@ -16,7 +16,7 @@ class Example {
 task Startup(StartupObject s {initialstate}) {
     for(int i=0;i<10;i++) {
        Example e=new Example() {needoperation};
-       e.x=i;
+       e.x=i+2;
        e.y=2;
        e.operation=i%2;
     }
@@ -43,5 +43,6 @@ task DoOperation(Example e{needoperation}) {
 
 task DoPrint(Example e{needprinting}) {
     System.printInt(e.z);
+    System.printString("\n");
     taskexit(e {!needprinting});
 }
index ff598b7400e8b8344beda750c43c356edaf7146c..07cb3d6daf74703d38fac49677aec26f14c462b7 100755 (executable)
@@ -4,4 +4,4 @@ MAINFILE=$1
 shift
 mkdir tmpbuilddirectory
 java -cp $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main -classlibrary $ROBUSTROOT/ClassLibrary/ -dir tmpbuilddirectory -task $@
-gcc -I$ROBUSTROOT/Runtime -Itmpbuilddirectory -O0 -DTASK -g tmpbuilddirectory/methods.c $ROBUSTROOT/Runtime/runtime.c $ROBUSTROOT/Runtime/Queue.c $ROBUSTROOT/Runtime/SimpleHash.c -o $MAINFILE.bin
\ No newline at end of file
+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 -o $MAINFILE.bin
\ No newline at end of file