void visit_embedded_code_pointers(code_block *compiled);
void visit_context_code_blocks();
void visit_uninitialized_code_blocks();
- void visit_sample_callstacks();
void visit_code_roots();
};
case WORD_TYPE:
{
word *w = (word *)obj;
- if(w->code)
- w->code = visit_code_block(w->code);
- if(w->counting_profiler)
- w->counting_profiler = visit_code_block(w->counting_profiler);
-
- 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_sample_callstacks()
-{
- for (std::vector<code_block *>::const_iterator iter = parent->sample_callstacks.begin();
- iter != parent->sample_callstacks.end();
- ++iter)
- {
- fixup.fixup_code(*iter);
- }
-}
-
template<typename Fixup>
void code_block_visitor<Fixup>::visit_code_roots()
{
visit_uninitialized_code_blocks();
- visit_sample_callstacks();
}
}