Пример #1
0
void code_block_visitor<Visitor>::visit_object_code_block(object *obj)
{
	switch(obj->type())
	{
	case WORD_TYPE:
		{
			word *w = (word *)obj;
			if(w->code)
				w->code = visitor(w->code);
			if(w->profiling)
				w->profiling = visitor(w->profiling);

			parent->update_word_entry_point(w);
			break;
		}
	case QUOTATION_TYPE:
		{
			quotation *q = (quotation *)obj;
			if(q->code)
				parent->set_quot_entry_point(q,visitor(q->code));
			break;
		}
	case CALLSTACK_TYPE:
		{
			callstack *stack = (callstack *)obj;
			call_frame_code_block_visitor<Visitor> call_frame_visitor(parent,visitor);
			parent->iterate_callstack_object(stack,call_frame_visitor);
			break;
		}
	}
}
Пример #2
0
void slot_visitor<Fixup>::visit_callstack(context* ctx) {
  call_frame_slot_visitor<Fixup> call_frame_visitor(parent, this);
  parent->iterate_callstack(ctx, call_frame_visitor, fixup);
}
Пример #3
0
void code_block_visitor<Visitor>::visit_context_code_blocks()
{
	call_frame_code_block_visitor<Visitor> call_frame_visitor(parent,visitor);
	parent->iterate_active_callstacks(call_frame_visitor);
}
Пример #4
0
void slot_visitor<Fixup>::visit_callstack_object(callstack* stack) {
  call_frame_slot_visitor<Fixup> call_frame_visitor(parent, this);
  parent->iterate_callstack_object(stack, call_frame_visitor, fixup);
}