diff --git a/sylvan_common.c b/sylvan_common.c index 7aa7d7ed291e8307e0db886264abe2948b6c2e07..091103332e1bf1f3f7755e40af780ce8223b57d2 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 008541b5f5b09a46f85696f0dbc61238b6a611b0..39c14327bbe69ddb4bb09f262534876803dc8e5f 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 efbc02aa8abf184c28047449875851c437e072db..ffbe08a53055474d2b9e4970629fbe441aa5466f 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 62d76f87305894a20832fe953d29c115e86de0af..4ff20e10716ead1b8e688ed78e0f47cf522c10ad 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 d10dddfb1b0bcf863e08d7e5ac2a546be8645392..b263ea4c1d75f1e3e70970aa91150f86adaeacb9 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 e355166e8fcdbea467ac8e364cc15fe5fdab521b..46ed7014e8b8f568c559304220feb4bab7704a92 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 623dadce91374b49aa70477dba8eedff53436b31..299cef1214506c6b76af806b4701361d5468acbb 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;