diff options
author | Teddy <ted.sybil@gmail.com> | 2013-08-13 14:49:18 +0800 |
---|---|---|
committer | Teddy <ted.sybil@gmail.com> | 2013-08-13 14:49:18 +0800 |
commit | b215daca250b567d2b1a253c5019d94edf21d1cf (patch) | |
tree | 11e9956fcf2a11dee04f4a1d6a7e86589e09e5cf /gc.h | |
parent | ba5fb7e4112bec20244586ac12285cfb25f2423f (diff) | |
parent | 2c48014df55c0e7b7b12ebff9bef8fe567a6d4d2 (diff) |
Merge branch 'gc'
Conflicts:
types.cpp
Diffstat (limited to 'gc.h')
-rw-r--r-- | gc.h | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -0,0 +1,32 @@ +#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: + GarbageCollector(); + void force(); + void expose(EvalObj *ptr); + EvalObj *attach(EvalObj *ptr); +}; + +extern GarbageCollector gc; + +#endif |