Mercurial > hg > Gears > Gears
changeset 1062:af0eb01e6b11
add test2 for rbtree copy
author | matac42 <matac@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 31 Jan 2024 19:09:55 +0900 |
parents | 1752e8a6e04c |
children | 6ca9a8755fd5 |
files | src/parallel_execution/CMakeLists.txt src/parallel_execution/RedBlackTree.cbc src/parallel_execution/Tree.h src/parallel_execution/test/rbTreeCopy_test2.cbc |
diffstat | 4 files changed, 86 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/parallel_execution/CMakeLists.txt Sun Jan 28 18:36:13 2024 +0900 +++ b/src/parallel_execution/CMakeLists.txt Wed Jan 31 19:09:55 2024 +0900 @@ -145,6 +145,13 @@ GearsCommand( TARGET + rbtree_copy2 + SOURCES + SingleLinkedQueue.cbc test/rbTreeCopy_test2.cbc RedBlackTree.cbc SingleLinkedStack.cbc compare.c +) + +GearsCommand( + TARGET boundedBuffer SOURCES examples/boundedBuffer/main.cbc examples/boundedBuffer/initBuffer.cbc examples/boundedBuffer/SemaphoreImpl.cbc examples/boundedBuffer/BoundedBuffer.cbc examples/boundedBuffer/consumer.cbc examples/boundedBuffer/producer.cbc SpinLock.cbc CPUWorker.cbc TaskManagerImpl.cbc SingleLinkedQueue.cbc SynchronizedQueue.cbc MultiDimIterator.cbc AtomicReference.cbc
--- a/src/parallel_execution/RedBlackTree.cbc Sun Jan 28 18:36:13 2024 +0900 +++ b/src/parallel_execution/RedBlackTree.cbc Wed Jan 31 19:09:55 2024 +0900 @@ -17,6 +17,9 @@ // tree->clear = C_clearRedBlackTree; tree->copy = C_copyRedBlackTree; + // for debug + tree->iter = new Integer(); + redBlackTree->root = NULL; redBlackTree->nodeStack = createSingleLinkedStack(context); redBlackTree->toStack = createSingleLinkedStack(context);
--- a/src/parallel_execution/Tree.h Sun Jan 28 18:36:13 2024 +0900 +++ b/src/parallel_execution/Tree.h Wed Jan 31 19:09:55 2024 +0900 @@ -4,6 +4,7 @@ /* Type* node; */ union Data* tree; struct Node* node; + struct Integer* iter; __code put(Impl* tree, Type* node, __code next(...)); __code get(Impl* tree, Type* node, __code next(...)); __code remove(Impl* tree, Type* node, __code next(...));
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/parallel_execution/test/rbTreeCopy_test2.cbc Wed Jan 31 19:09:55 2024 +0900 @@ -0,0 +1,75 @@ +#include <stdio.h> +#interface "Tree.h" +#include <time.h> + +/* #include <assert.h> */ + +__code rbTreeTest1(struct Tree* tree) { + // printf("Test1\n"); + Node* node = new Node(); + Integer* i = tree->iter; + node->value = (union Data*)new Integer(); + ((Integer*)node->value)->value = i->value; + node->key = i->value; + // printf("value->%d,key->%d\n",((Integer*)node->value)->value,node->key); + if (i->value <= 3) { + i->value += 1; + goto tree->put(node, rbTreeTest2); + } else { + goto rbTreeTest4(); + } +} + +__code rbTreeTest1_stub(struct Context* context) { + // printf("test1_stub\n"); + Tree* tree = createRedBlackTree(context); + goto rbTreeTest1(context,tree); +} + +__code rbTreeTest2(struct Tree* tree) { + // printf("Test2\n"); + Node* node = new Node(); + Integer* i = tree->iter; + node->value = (union Data*)new Integer(); + ((Integer*)node->value)->value = i->value; + node->key = i->value; + // printf("value->%d,key->%d\n",((Integer*)node->value)->value,node->key); + if (i->value <= 6315) { + i->value += 1; + goto tree->put(node, rbTreeTest2); + } else { + goto rbTreeTest4(); + } +} + +__code rbTreeTest2_stub(struct Context* context) { + // printf("test2_stub\n"); + Tree* tree = (struct Tree*)Gearef(context, Tree)->tree; + goto rbTreeTest2(context,tree); +} + +__code rbTreeTest4(struct Tree* tree) { + // printf("test4\n"); + Node* node = new Node(); + node->value = (union Data*)new Integer(); + clock_t start = clock(); + printf("start: %f 秒\n", start/CLOCKS_PER_SEC); + goto tree->copy(assert1); +} + +__code rbTreeTest4_stub(struct Context* context) { + // printf("test4_stub\n"); + Tree* tree = (struct Tree*)Gearef(context, Tree)->tree; + goto rbTreeTest4(context,tree); +} + +__code assert1(struct Tree* tree) { + clock_t end = clock(); + printf("end: %f 秒\n", end/CLOCKS_PER_SEC); + // printf("assert1\n"); +} + +int main(int argc, char const* argv[]) { + // printf("test_main\n"); + goto rbTreeTest1(); +}