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>
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:
parent->code->uninitialized_blocks = new_uninitialized_blocks;
}
+template<typename Fixup>
+void code_block_visitor<Fixup>::visit_code_roots()
+{
+ visit_uninitialized_code_blocks();
+}
+
}