aboutsummaryrefslogtreecommitdiffstats
path: root/src/gc.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-10-14 00:43:14 +0000
committerDavid Robillard <d@drobilla.net>2009-10-14 00:43:14 +0000
commit336648e6c68fb0d24d12e67e37c9398c01d09c34 (patch)
tree291b28073091b65d41a82e36853130ce3b7adfda /src/gc.cpp
parentba3406f78e20f2e6a7fd6dbe28eb8de553cec9ae (diff)
downloadresp-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.cpp36
1 files changed, 10 insertions, 26 deletions
diff --git a/src/gc.cpp b/src/gc.cpp
index 09bd78c..96d412a 100644
--- a/src/gc.cpp
+++ b/src/gc.cpp
@@ -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;