From addbfae58d8afceb06d92f6ef1cdfed89c07518b Mon Sep 17 00:00:00 2001 From: Teddy Date: Wed, 14 Aug 2013 23:28:20 +0800 Subject: significant improvement on gc efficiency --- gc.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'gc.h') diff --git a/gc.h b/gc.h index 452b0a0..78d26ae 100644 --- a/gc.h +++ b/gc.h @@ -4,10 +4,9 @@ #include "model.h" #include -const int GC_QUEUE_SIZE = 262144; +const int GC_QUEUE_SIZE = 64 * 1024 * 1024; const size_t GC_CYC_THRESHOLD = GC_QUEUE_SIZE >> 1; -typedef std::map EvalObj2Int; typedef std::set EvalObjSet; #define GC_CYC_TRIGGER(ptr) \ @@ -31,7 +30,7 @@ class GarbageCollector { PendingEntry(EvalObj *obj, PendingEntry *next); }; - EvalObj2Int mapping; + EvalObjSet joined; PendingEntry *pending_list; size_t resolve_threshold; @@ -42,6 +41,8 @@ class GarbageCollector { void force(); void expose(EvalObj *ptr); void set_resolve_threshold(size_t new_thres); + void join(EvalObj *ptr); + void quit(EvalObj *ptr); size_t get_remaining(); EvalObj *attach(EvalObj *ptr); }; -- cgit v1.2.3