/* * call-seq: * context.frame_class(frame_position) -> obj * * Returns the real class of the frame. * It could be different than context.frame_self(frame).class */ static VALUE context_frame_class(int argc, VALUE *argv, VALUE self) { VALUE frame; debug_context_t *debug_context; debug_frame_t *debug_frame; VALUE klass; debug_check_started(); frame = optional_frame_position(argc, argv); Data_Get_Struct(self, debug_context_t, debug_context); debug_frame = GET_FRAME; if(CTX_FL_TEST(debug_context, CTX_FL_DEAD)) return Qnil; #if RUBY_VERSION_CODE >= 190 klass = debug_frame->info.runtime.frame->this_class; #else klass = debug_frame->info.runtime.frame->last_class; #endif klass = real_class(klass); if(TYPE(klass) == T_CLASS || TYPE(klass) == T_MODULE) return klass; return Qnil; }