diff options
author | Teddy <ted.sybil@gmail.com> | 2013-08-12 17:42:51 +0800 |
---|---|---|
committer | Teddy <ted.sybil@gmail.com> | 2013-08-12 17:42:51 +0800 |
commit | 301c949362d243bb6b69956355e0e7ecccc43ce4 (patch) | |
tree | 2d8cc4a4984e026c6787daa37a6901d5e9770922 /gc.h | |
parent | b525cc4808cbbe68132e5941187030d3dd38abc2 (diff) |
adding gc framework
Diffstat (limited to 'gc.h')
-rw-r--r-- | gc.h | 31 |
1 files changed, 31 insertions, 0 deletions
@@ -0,0 +1,31 @@ +#ifndef GC_H +#define GC_H + +#include "model.h" +#include <map> + +const int GC_QUEUE_SIZE = 262144; + +typedef std::map<EvalObj*, size_t> 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 |