static VALUE get_klass(const rb_control_frame_t *cfp) { VALUE klass; if (rb_vm_control_frame_id_and_class(cfp, 0, &klass)) { if (RB_TYPE_P(klass, T_ICLASS)) { return RBASIC(klass)->klass; } else { return klass; } } else { return Qnil; } }
static void fill_id_and_klass(rb_trace_arg_t *trace_arg) { if (!trace_arg->klass_solved) { if (!trace_arg->klass) { rb_vm_control_frame_id_and_class(trace_arg->cfp, &trace_arg->id, &trace_arg->klass); } if (trace_arg->klass) { if (RB_TYPE_P(trace_arg->klass, T_ICLASS)) { trace_arg->klass = RBASIC(trace_arg->klass)->klass; } } else { trace_arg->klass = Qnil; } trace_arg->klass_solved = 1; } }