# HG changeset patch # User Tatsuki IHA # Date 1465292601 -32400 # Node ID d05b9937aa952256b1a8f8ef3a42677943ab77e5 # Parent e3cba827d4893fdf45af20a9c0cdae29b57ef29f Change element data from Task to Data diff -r e3cba827d489 -r d05b9937aa95 src/parallel_execution/context.c --- a/src/parallel_execution/context.c Tue May 03 17:29:21 2016 +0900 +++ b/src/parallel_execution/context.c Tue Jun 07 18:43:21 2016 +0900 @@ -149,7 +149,7 @@ counter->i = 0; struct Element* element = ALLOC_DATA(context, Element); - element->task = 0; + element->data = 0; element->next = 0; ALLOC_DATA(context, Time); diff -r e3cba827d489 -r d05b9937aa95 src/parallel_execution/context.h --- a/src/parallel_execution/context.h Tue May 03 17:29:21 2016 +0900 +++ b/src/parallel_execution/context.h Tue Jun 07 18:43:21 2016 +0900 @@ -134,7 +134,7 @@ enum Code code; int key; struct Queue* waitMe; - struct OdsQueue* waitI; + struct Queue* waitI; int idsCount; } task; struct Queue { @@ -143,7 +143,7 @@ int count; } queue; struct Element { - struct Task* task; + union Data* data; struct Element* next; } element; struct Array { @@ -179,13 +179,10 @@ struct OutPutDataSegments { union Data **data; } ods; - struct OdsQueue { - struct OdsElement* first; - struct OdsElement* last; - int count; - } odsQueue; - struct OdsElement { - struct OutPutDataSegments* ods; - struct OdsElement* next; - } odsElement; }; + +union MetaData { + struct Queue waitMeTasks; + struct Queue waitI; +}; + diff -r e3cba827d489 -r d05b9937aa95 src/parallel_execution/dependency.c --- a/src/parallel_execution/dependency.c Tue May 03 17:29:21 2016 +0900 +++ b/src/parallel_execution/dependency.c Tue Jun 07 18:43:21 2016 +0900 @@ -8,7 +8,7 @@ } __code waitFor1(struct Context* context, struct Task* master, struct Task* slave, struct Element* element) { - element->task = slave; + element->data = (union Data *)slave; // enqueue waitMe goto meta_waitFor(context, master->waitMe, PutQueue1); } @@ -35,15 +35,13 @@ __code spawnTask(struct Context* context, struct Task* task, struct Element* element, struct Queue* activeQueue, struct Queue* waitQueue) { //printf("spawn Task\n"); + element->data = (union Data *)task; if (task->waitI->count == task->idsCount) { //printf("put ActiveQueue\n"); - element->task = task; // enqueue activeQueue goto meta_spawnTask(context, activeQueue, PutQueue1); - } - else { + } else { //printf("put WaitQueue\n"); - element->task = task; // enqueue waitQueue goto meta_spawnTask(context, waitQueue, PutQueue1); } diff -r e3cba827d489 -r d05b9937aa95 src/parallel_execution/main.c --- a/src/parallel_execution/main.c Tue May 03 17:29:21 2016 +0900 +++ b/src/parallel_execution/main.c Tue Jun 07 18:43:21 2016 +0900 @@ -14,7 +14,7 @@ void print_queue(struct Element* element) { while (element) { - printf("%d\n", element->task->key); + printf("%d\n", ((struct Task *)(element->data))->key); element = element->next; } } @@ -52,7 +52,7 @@ int i = loopCounter->i; if (i < length) { - // printf("%d\n", array->array[i]); + printf("%d\n", array->array[i]); if (array->array[i] == (i*2)) { loopCounter->i++; goto meta(context, Code2); @@ -129,7 +129,7 @@ } __code createTask3(struct Context* context, struct Allocate* allocate) { - allocate->size = sizeof(struct OdsQueue); + allocate->size = sizeof(struct Queue); allocator(context); goto meta(context, CreateTask4); } @@ -160,7 +160,7 @@ task->waitI = waitI; task->idsCount = 0; - element->task = task; + element->data = (union Data *)task; context->next = CreateData1; loopCounter->i++; @@ -188,7 +188,7 @@ // task->waitI = waitI; // task->idsCount = 1; // -// element->task = task; +// element->data = (union Data *)task; // // context->next = CreateData1; // loopCounter->i++; @@ -211,7 +211,7 @@ // // task->code = TaskB; // task->key = i; -// element->task = task; +// element->data = (union Data *)task; // // context->next = CreateData1; // loopCounter->i++; @@ -237,7 +237,7 @@ } __code putQueue2(struct Context* context, struct Element* new_element, struct Element* element, struct Queue* queue) { - new_element->task = element->task; + new_element->data = element->data; if (queue->first) goto meta(context, PutQueue3); diff -r e3cba827d489 -r d05b9937aa95 src/parallel_execution/worker.c --- a/src/parallel_execution/worker.c Tue May 03 17:29:21 2016 +0900 +++ b/src/parallel_execution/worker.c Tue Jun 07 18:43:21 2016 +0900 @@ -14,8 +14,8 @@ context->next = GetQueue; stack_push(context->code_stack, &context->next); - context->next = first->task->code; - node->key = first->task->key; + context->next = ((struct Task *)(first->data))->code; + node->key = ((struct Task *)(first->data))->key; struct Traverse *t = &context->data[Traverse]->traverse; t->next = GetQueue;