From 301c949362d243bb6b69956355e0e7ecccc43ce4 Mon Sep 17 00:00:00 2001 From: Teddy Date: Mon, 12 Aug 2013 17:42:51 +0800 Subject: adding gc framework --- gc.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 gc.h (limited to 'gc.h') diff --git a/gc.h b/gc.h new file mode 100644 index 0000000..417462f --- /dev/null +++ b/gc.h @@ -0,0 +1,31 @@ +#ifndef GC_H +#define GC_H + +#include "model.h" +#include + +const int GC_QUEUE_SIZE = 262144; + +typedef std::map EvalObj2Int; + +class GarbageCollector { + + struct PendingEntry { + EvalObj *obj; + PendingEntry *next; + PendingEntry(EvalObj *obj, PendingEntry *next); + }; + + EvalObj2Int mapping; + size_t pend_cnt; + PendingEntry *pending_list; + + public: + void force(); + void expose(EvalObj *ptr); + EvalObj *attach(EvalObj *ptr); +}; + +extern GarbageCollector gc; + +#endif -- cgit v1.2.3