Module: Kernel

Defined in:
(unknown)

Instance Method Summary collapse

Instance Method Details

#callsite_hashObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'ext/callsite_hash.c', line 18

static VALUE rb_f_callsite(VALUE obj) {
  struct FRAME *frame = ruby_frame;
  NODE *n;
  int csite = 0;

  if (frame->last_func == ID_ALLOCATOR) frame = frame->prev;

  ruby_set_current_source();
  if (ruby_sourcefile) csite += strhash(ruby_sourcefile);
  csite += frame->last_func + ruby_sourceline; 

  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;
      }
      csite += frame->prev->last_func;
    }
    if (n->nd_file) csite += strhash(n->nd_file);
    csite += nd_line(n);
  }

  return INT2FIX(csite);
}