]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/code_block_visitor.hpp
vm: strip out call-counting profiler
[factor.git] / vm / code_block_visitor.hpp
index 8b48d3672f8f38a142fcefaed54e606bd5eac72e..2421ace669657b6565939e9d0c31181dc880807e 100644 (file)
@@ -24,6 +24,8 @@ template<typename Fixup> struct code_block_visitor {
        void visit_embedded_code_pointers(code_block *compiled);
        void visit_context_code_blocks();
        void visit_uninitialized_code_blocks();
+
+       void visit_code_roots();
 };
 
 template<typename Fixup>
@@ -57,19 +59,15 @@ void code_block_visitor<Fixup>::visit_object_code_block(object *obj)
        case WORD_TYPE:
                {
                        word *w = (word *)obj;
-                       if(w->code)
-                               w->code = visit_code_block(w->code);
-                       if(w->profiling)
-                               w->profiling = visit_code_block(w->profiling);
-
-                       parent->update_word_entry_point(w);
+                       if(w->entry_point)
+                               w->entry_point = visit_code_block(w->code())->entry_point();
                        break;
                }
        case QUOTATION_TYPE:
                {
                        quotation *q = (quotation *)obj;
-                       if(q->code)
-                               parent->set_quot_entry_point(q,visit_code_block(q->code));
+                       if(q->entry_point)
+                               q->entry_point = visit_code_block(q->code())->entry_point();
                        break;
                }
        case CALLSTACK_TYPE:
@@ -133,4 +131,10 @@ void code_block_visitor<Fixup>::visit_uninitialized_code_blocks()
        parent->code->uninitialized_blocks = new_uninitialized_blocks;
 }
 
+template<typename Fixup>
+void code_block_visitor<Fixup>::visit_code_roots()
+{
+       visit_uninitialized_code_blocks();
+}
+
 }