static void coverage_increase_counter_cached(char *sourcefile, int sourceline) { if(cached_file == sourcefile && cached_array && cached_array->len > sourceline) { cached_array->ptr[sourceline]++; return; } cached_file = sourcefile; cached_array = coverage_increase_counter_uncached(sourcefile, sourceline, 0); }
static void coverage_mark_caller() { struct FRAME *frame = ruby_frame; NODE *n; if (frame->last_func == ID_ALLOCATOR) frame = frame->prev; for (; frame && (n = frame->node); frame = frame->prev) { if (frame->prev && frame->prev->last_func) { if (frame->prev->node == n) { if (frame->prev->last_func == frame->last_func) continue; } coverage_increase_counter_uncached(n->nd_file, nd_line(n) - 1, 1); } else { coverage_increase_counter_uncached(n->nd_file, nd_line(n) - 1, 1); } break; } }