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();
+}