comparison src/parallel_execution/test/stack_test.c @ 215:50d0d1b468aa

Fix stack_test
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Fri, 06 Jan 2017 06:48:59 +0900
parents b6ffdd99e525
children 421ea91dd76c
comparison
equal deleted inserted replaced
214:da8ca04eb4f3 215:50d0d1b468aa
1 #include "../stack.h" 1 #include "../stack.h"
2 #include "../context.h" 2 #include "../context.h"
3 #include "../origin_cs.h" 3 #include "../origin_cs.h"
4 #include <assert.h> 4 #include <assert.h>
5
5 extern __code initContext(struct Context* context); 6 extern __code initContext(struct Context* context);
6 7
7 __code stack_test1(struct Context* context, struct Task* task, struct Stack* stack) { 8 __code stack_test1(struct Context* context, struct Task* task, struct Stack* stack) {
8 task->code = C_stack_test1; 9 task->code = C_stack_test1;
9 stack->next = C_stack_test2; 10 stack->next = C_stack_test2;
10 stack->data = (union Data*)task; 11 stack->data = (union Data*)task;
11 goto meta(context, stack->push); 12 goto meta(context, stack->stack->Stack.push);
12 } 13 }
13 14
14 __code stack_test1_stub(struct Context* context) { 15 __code stack_test1_stub(struct Context* context) {
15 Task* task = &ALLOCATE(context, Task)->Task; 16 Task* task = &ALLOCATE(context, Task)->Task;
16 struct Stack* stack = &(createSingleLinkedStack(context)->Stack); 17 struct Stack* stack = &(createSingleLinkedStack(context)->Stack);
17 assert(stack->stack->SingleLinkedStack.top == NULL); 18 assert(stack->stack->SingleLinkedStack.top == NULL);
18 context->data[D_Stack]->Stack.stack = (union Data*)stack; 19 context->data[D_Stack]->Stack.stack = (union Data*)stack;
19 goto stack_test1(context, 20 goto stack_test1(context,
20 task, 21 task,
21 &context->data[D_Stack]->Stack.stack->Stack); 22 &context->data[D_Stack]->Stack);
22 } 23 }
23 24
24 __code stack_test2(struct Context* context, struct Task* task, struct Stack* stack) { 25 __code stack_test2(struct Context* context, struct Task* task, struct Stack* stack) {
25 task->code = C_stack_test2; 26 task->code = C_stack_test2;
26 stack->next = C_stack_test3; 27 stack->next = C_stack_test3;
27 stack->data = (union Data*)task; 28 stack->data = (union Data*)task;
28 goto meta(context, stack->push); 29 goto meta(context, stack->stack->Stack.push);
29 } 30 }
30 31
31 __code stack_test2_stub(struct Context* context) { 32 __code stack_test2_stub(struct Context* context) {
32 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test1); 33 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test1);
33 Task* task = &ALLOCATE(context, Task)->Task; 34 Task* task = &ALLOCATE(context, Task)->Task;
34 goto stack_test2(context, 35 goto stack_test2(context,
35 task, 36 task,
36 &context->data[D_Stack]->Stack.stack->Stack); 37 &context->data[D_Stack]->Stack);
37 } 38 }
38 39
39 __code stack_test3(struct Context* context, struct Stack* stack) { 40 __code stack_test3(struct Context* context, struct Stack* stack) {
40 stack->next = C_stack_test4; 41 stack->next = C_stack_test4;
41 goto meta(context, stack->pop); 42 goto meta(context, stack->stack->Stack.pop);
42 } 43 }
43 44
44 __code stack_test3_stub(struct Context* context) { 45 __code stack_test3_stub(struct Context* context) {
45 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test2); 46 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test2);
46 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test1);
47 goto stack_test3(context, 47 goto stack_test3(context,
48 &context->data[D_Stack]->Stack.stack->Stack); 48 &context->data[D_Stack]->Stack);
49 } 49 }
50 50
51 __code stack_test4(struct Context* context) { 51 __code stack_test4(struct Context* context) {
52 goto meta(context, exit_code); 52 goto meta(context, C_exit_code);
53 } 53 }
54 54
55 __code stack_test4_stub(struct Context* context) { 55 __code stack_test4_stub(struct Context* context) {
56 assert(context->data[D_Stack]->Stack.stack->Stack.data->Task.code == C_stack_test1); 56 assert(context->data[D_Stack]->Stack.data->Task.code == C_stack_test2);
57 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test1); 57 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test1);
58 goto stack_test4(context); 58 goto stack_test4(context);
59 } 59 }
60 60
61 int main(int argc, char const* argv[]) { 61 int main(int argc, char const* argv[]) {