diff options
author | David Robillard <d@drobilla.net> | 2009-10-14 00:43:14 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-10-14 00:43:14 +0000 |
commit | 336648e6c68fb0d24d12e67e37c9398c01d09c34 (patch) | |
tree | 291b28073091b65d41a82e36853130ce3b7adfda /src/gc.cpp | |
parent | ba3406f78e20f2e6a7fd6dbe28eb8de553cec9ae (diff) | |
download | resp-336648e6c68fb0d24d12e67e37c9398c01d09c34.tar.gz resp-336648e6c68fb0d24d12e67e37c9398c01d09c34.tar.bz2 resp-336648e6c68fb0d24d12e67e37c9398c01d09c34.zip |
Remove cruft.
git-svn-id: http://svn.drobilla.net/resp/tuplr@216 ad02d1e2-f140-0410-9f75-f8b11f17cedd
Diffstat (limited to 'src/gc.cpp')
-rw-r--r-- | src/gc.cpp | 36 |
1 files changed, 10 insertions, 26 deletions
@@ -38,13 +38,12 @@ GC::~GC() } void* -GC::alloc(size_t size, GC::Tag tag) +GC::alloc(size_t size) { size += (4 - (size % 4)); // Align to 32-bits size += sizeof(Object::Header); void* ret = tlsf_malloc((tlsf_t*)_pool, size); ((Object::Header*)ret)->mark = 0; - ((Object::Header*)ret)->tag = tag; ret = (char*)ret + sizeof(Object::Header); _heap.push_back((Object*)ret); return ret; @@ -57,16 +56,10 @@ mark(const Object* obj) return; obj->mark(true); - switch (obj->tag()) { - case GC::TAG_FRAME: - break; - case GC::TAG_AST: - const ATuple* tup = dynamic_cast<const ATuple*>((AST*)obj); - if (tup) - FOREACH(ATuple::const_iterator, i, *tup) - mark(*i); - break; - } + const ATuple* tup = dynamic_cast<const ATuple*>((AST*)obj); + if (tup) + FOREACH(ATuple::const_iterator, i, *tup) + mark(*i); } void @@ -78,26 +71,17 @@ GC::collect(const Roots& roots) mark(*i); for (Heap::iterator i = _heap.begin(); i != _heap.end();) { - assert((*i)->tag() == GC::TAG_AST || (*i)->tag() == GC::TAG_FRAME); Heap::iterator next = i; ++next; if ((*i)->marked()) { (*i)->mark(false); } else { - switch ((*i)->tag()) { - case GC::TAG_FRAME: - tlsf_free((tlsf_t*)_pool, (char*)(*i) - sizeof(Object::Header)); - _heap.erase(i); - break; - case GC::TAG_AST: - AST* ast = (AST*)*i; - if (!ast->to<AType*>()) { // FIXME - (ast)->~AST(); - tlsf_free((tlsf_t*)_pool, ((char*)(*i) - sizeof(Object::Header))); - _heap.erase(i); - } - break; + AST* ast = (AST*)*i; + if (!ast->to<AType*>()) { // FIXME + (ast)->~AST(); + tlsf_free((tlsf_t*)_pool, ((char*)(*i) - sizeof(Object::Header))); + _heap.erase(i); } } i = next; |