Exemplo n.º 1
0
void
prof_call_infos_mark(prof_call_infos_t *call_infos)
{
    prof_call_info_t **call_info;

	if (call_infos->object)
		rb_gc_mark(call_infos->object);

    for(call_info=call_infos->start; call_info<call_infos->ptr; call_info++)
    {
		prof_call_info_mark(*call_info);
    }
}
Exemplo n.º 2
0
static void
prof_call_info_mark(prof_call_info_t *call_info)
{
  {
    VALUE target = call_info->target->object;
    if (NIL_P(target))
      prof_method_mark(call_info->target);
    else
      rb_gc_mark(target);
  }
  rb_gc_mark(call_info->children);
  if (call_info->parent) {
    VALUE parent = call_info->parent->object;
    if (NIL_P(parent)) {
      prof_call_info_mark(call_info->parent);
    }
    else {
      rb_gc_mark(parent);
    }
  }
}