From 7184c4aede8b1d95c33442862075b37f9eaae899 Mon Sep 17 00:00:00 2001
From: abid <chiheb.abid@gmail.com>
Date: Thu, 7 May 2020 20:36:41 +0100
Subject: [PATCH] =?UTF-8?q?=09modifi=C3=A9=C2=A0:=20=20=20=20=20=20=20=20?=
 =?UTF-8?q?=20sylvan=5Fcommon.c=20=09modifi=C3=A9=C2=A0:=20=20=20=20=20=20?=
 =?UTF-8?q?=20=20=20sylvan=5Fint.h=20=09modifi=C3=A9=C2=A0:=20=20=20=20=20?=
 =?UTF-8?q?=20=20=20=20sylvan=5Fldd.c=20=09modifi=C3=A9=C2=A0:=20=20=20=20?=
 =?UTF-8?q?=20=20=20=20=20sylvan=5Fldd.h=20=09modifi=C3=A9=C2=A0:=20=20=20?=
 =?UTF-8?q?=20=20=20=20=20=20sylvan=5Fseq.c=20=09modifi=C3=A9=C2=A0:=20=20?=
 =?UTF-8?q?=20=20=20=20=20=20=20sylvan=5Fseq.h=20=09modifi=C3=A9=C2=A0:=20?=
 =?UTF-8?q?=20=20=20=20=20=20=20=20sylvan=5Ftable.c?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 sylvan_common.c |  1 +
 sylvan_int.h    |  2 +-
 sylvan_ldd.c    | 18 ++++++------------
 sylvan_ldd.h    |  3 +--
 sylvan_seq.c    |  1 -
 sylvan_seq.h    |  1 +
 sylvan_table.c  |  1 +
 7 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/sylvan_common.c b/sylvan_common.c
index 7aa7d7e..0911033 100755
--- a/sylvan_common.c
+++ b/sylvan_common.c
@@ -271,6 +271,7 @@ VOID_TASK_IMPL_0(sylvan_gc)
  */
 
 llmsset_t nodes;
+uint32_t g_created=0;
 
 static size_t table_min = 0, table_max = 0, cache_min = 0, cache_max = 0;
 
diff --git a/sylvan_int.h b/sylvan_int.h
index 008541b..39c1432 100755
--- a/sylvan_int.h
+++ b/sylvan_int.h
@@ -44,7 +44,7 @@ extern "C" {
  * Nodes table.
  */
 extern llmsset_t nodes;
-
+extern uint32_t g_created;
 /**
  * Macros for all operation identifiers for the operation cache
  */
diff --git a/sylvan_ldd.c b/sylvan_ldd.c
index efbc02a..ffbe08a 100755
--- a/sylvan_ldd.c
+++ b/sylvan_ldd.c
@@ -388,7 +388,10 @@ lddmc_makenode(uint32_t value, MDD ifeq, MDD ifneq)
         }
     }
 
-    if (created) sylvan_stats_count(LDD_NODES_CREATED);
+    if (created) {
+        sylvan_stats_count(LDD_NODES_CREATED);
+
+    }
     else sylvan_stats_count(LDD_NODES_REUSED);
 
     return (MDD)index;
@@ -3020,7 +3023,6 @@ lddmc_test_ismdd(MDD mdd)
 void init_gc_seq()
 {
     LACE_ME;
-    LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t);
     sequentiel_refs=lddmc_refs_key;
 }
 
@@ -3075,9 +3077,9 @@ void llmsset_destroy_unmarked_seq( llmsset_t dbs)
 
 void sylvan_gc_seq()
 {
-    if (seq_llmsset_count_marked(nodes)>llmsset_get_size(nodes)/2)
+    if (g_created>llmsset_get_size(nodes)/2)
     {
-    	//printf("GC active \n ");
+    	g_created=seq_llmsset_count_marked(nodes);
         cache_clear();
         llmsset_clear_data_seq(nodes);
         ldd_gc_mark_protected();
@@ -3208,13 +3210,5 @@ ldd_gc_mark_rec(MDD mdd)
     }
 }
 
-void  displayMDDTableInfo()
-{
-    printf("%zu of %zu buckets filled!\n", seq_llmsset_count_marked(nodes), llmsset_get_size(nodes));
-}
-int isGCRequired()
-{
-    return (seq_llmsset_count_marked(nodes)>llmsset_get_size(nodes)/2);
-}
 
 #endif
diff --git a/sylvan_ldd.h b/sylvan_ldd.h
index 62d76f8..4ff20e1 100755
--- a/sylvan_ldd.h
+++ b/sylvan_ldd.h
@@ -312,8 +312,7 @@ void __attribute__((unused)) ldd_refs_pop(long amount);
 
 
 
-void  displayMDDTableInfo();
-int isGCRequired();
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
diff --git a/sylvan_seq.c b/sylvan_seq.c
index d10dddf..b263ea4 100755
--- a/sylvan_seq.c
+++ b/sylvan_seq.c
@@ -556,4 +556,3 @@ MDD ldd_divide_rec(MDD a, int level)
 
 
 
-
diff --git a/sylvan_seq.h b/sylvan_seq.h
index e355166..46ed701 100755
--- a/sylvan_seq.h
+++ b/sylvan_seq.h
@@ -38,6 +38,7 @@ MDD ldd_divide_rec(MDD a, int level);
 MDD ldd_divide_internal(MDD a,int current_level,int level);
 
 void sylvan_gc_seq();
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
diff --git a/sylvan_table.c b/sylvan_table.c
index 623dadc..299cef1 100755
--- a/sylvan_table.c
+++ b/sylvan_table.c
@@ -167,6 +167,7 @@ llmsset_lookup2(const llmsset_t dbs, uint64_t a, uint64_t b, int* created, const
             if (cas(bucket, 0, hash | cidx)) {
                 if (custom) set_custom_bucket(dbs, cidx, custom);
                 *created = 1;
+                g_created++;
                 return cidx;
             } else {
                 v = *bucket;
-- 
GitLab