diff options
author | Teddy <ted.sybil@gmail.com> | 2013-08-15 20:25:37 +0800 |
---|---|---|
committer | Teddy <ted.sybil@gmail.com> | 2013-08-15 20:25:37 +0800 |
commit | 8ac9aa9f90b608421098efb563a065f8787dbd6f (patch) | |
tree | 3bf018777a3c49ff7138294fdff5d6bd3325c69d /gc.cpp | |
parent | 9b1d0e016822509e5d3ea7bdc6341b4533b42080 (diff) |
remove unnecessary std::set in gcgc_imp
Diffstat (limited to 'gc.cpp')
-rw-r--r-- | gc.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
@@ -110,7 +110,6 @@ EvalObj *GarbageCollector::attach(EvalObj *ptr) { } void GarbageCollector::cycle_resolve() { - EvalObjSet visited; Container **clptr = cyc_list; for (ObjEntry *i = joined->next; i != oe_null; i = i->next) { @@ -126,17 +125,16 @@ void GarbageCollector::cycle_resolve() { EvalObj **l = gcq, **r = l; for (Container **p = cyc_list; p < clptr; p++) (*p)->gc_decrement(); + for (Container **p = cyc_list; p < clptr; p++) - if ((*p)->gc_refs) - { + if ((*p)->gc_refs) // must not be recycled *r++ = *p; - visited.insert(*p); - } + for (; l != r; l++) { Container *p = static_cast<Container*>(*l); p->keep = true; - p->gc_trigger(r, visited); + p->gc_trigger(r); } for (Container **p = cyc_list; p < clptr; p++) if (!(*p)->keep) |