]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/full_collector.hpp
GC maps for more compact inline GC checks
[factor.git] / vm / full_collector.hpp
index ba859e28c93c63a6cd63d9b379b4800ee52a30ce..82a057ddbfb726a5077d5971c20b60b601627b90 100644 (file)
@@ -25,26 +25,8 @@ struct full_policy {
        }
 };
 
-struct code_workhorse {
-       factor_vm *parent;
-       code_heap *code;
-
-       explicit code_workhorse(factor_vm *parent_) : parent(parent_), code(parent->code) {}
-
-       code_block *operator()(code_block *compiled)
-       {
-               if(!code->marked_p(compiled))
-               {
-                       code->set_marked_p(compiled);
-                       parent->mark_stack.push_back((cell)compiled + 1);
-               }
-
-               return compiled;
-       }
-};
-
 struct full_collector : collector<tenured_space,full_policy> {
-       code_block_visitor<code_workhorse> code_visitor;
+       code_block_visitor<gc_workhorse<tenured_space,full_policy> > code_visitor;
 
        explicit full_collector(factor_vm *parent_);
        void trace_code_block(code_block *compiled);