Class: RubyVM::ControlFrame
- Defined in:
- ext/internal/vm/control_frame/control_frame.c
Instance Method Summary collapse
-
#block_iseq ⇒ RubyVM::InstructionSequence?
Return the frame’s block_iseq member.
-
#iseq ⇒ RubyVM::InstructionSequence
Return the frame’s iseq member.
-
#method_class ⇒ Class
Return the frame’s method_class member.
-
#method_id ⇒ Symbol?
Return the frame’s method_id member.
-
#prev ⇒ RubyVM::ControlFrame
Return the frame’s prev member.
-
#proc ⇒ Object
Return the frame’s proc member.
-
#self ⇒ Object
Return the frame’s self member.
Instance Method Details
#block_iseq ⇒ RubyVM::InstructionSequence?
Return the frame’s block_iseq member.
69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 69
static VALUE control_frame_block_iseq(VALUE control_frame)
{
struct RubyInternalControlFrame * cfp;
Data_Get_Struct(control_frame, struct RubyInternalControlFrame, cfp);
if(cfp->control_frame->proc)
{
return (VALUE)cfp->control_frame->block_iseq;
}
else
{
return Qfalse;
}
}
|
#iseq ⇒ RubyVM::InstructionSequence
Return the frame’s iseq member.
43 44 45 46 47 48 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 43
static VALUE control_frame_iseq(VALUE control_frame)
{
struct RubyInternalControlFrame * cfp;
Data_Get_Struct(control_frame, struct RubyInternalControlFrame, cfp);
return (VALUE)cfp->control_frame->iseq;
}
|
#method_class ⇒ Class
Return the frame’s method_class member.
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 131
static VALUE control_frame_method_class(VALUE control_frame)
{
VALUE klass;
struct RubyInternalControlFrame * cfp;
Data_Get_Struct(control_frame, struct RubyInternalControlFrame, cfp);
#if RUBY_VERSION_CODE >= 192
klass = cfp->control_frame->me->klass; /* TODO: right? */
#else
klass = cfp->control_frame->method_class;
#endif
return klass;
}
|
#method_id ⇒ Symbol?
Return the frame’s method_id member.
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 102
static VALUE control_frame_method_id(VALUE control_frame)
{
ID method_id;
struct RubyInternalControlFrame * cfp;
Data_Get_Struct(control_frame, struct RubyInternalControlFrame, cfp);
#if RUBY_VERSION_CODE >= 192
method_id = cfp->control_frame->me->called_id; /* TODO: right? */
#else
method_id = cfp->control_frame->method_id;
#endif
if(method_id)
{
return ID2SYM(method_id);
}
else
{
return Qnil;
}
}
|
#prev ⇒ RubyVM::ControlFrame
Return the frame’s prev member.
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 153
static VALUE control_frame_prev(VALUE control_frame)
{
struct RubyInternalControlFrame * cfp;
rb_thread_t * th;
rb_control_frame_t * prev_cfp;
Data_Get_Struct(control_frame, struct RubyInternalControlFrame, cfp);
GetThreadPtr(cfp->thread, th);
prev_cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp->control_frame);
printf("current: %p\n", cfp->control_frame);
printf("prev: %p\n", prev_cfp);
printf("th->stack: %p\n", th->stack);
printf("th->stack + th->stack_size: %p\n", th->stack + th->stack_size);
if((void *)(th->stack + th->stack_size) == (void *)prev_cfp)
{
return Qnil;
}
else
{
VALUE cfp_v;
struct RubyInternalControlFrame * new_cfp;
cfp_v = Data_Make_Struct(
rb_cVmControlFrame,
struct RubyInternalControlFrame,
mark_ruby_internal_control_frame,
free,
new_cfp);
new_cfp->control_frame = prev_cfp;
new_cfp->thread = cfp->thread;
return cfp_v;
}
}
|
#proc ⇒ Object
Return the frame’s proc member.
89 90 91 92 93 94 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 89
static VALUE control_frame_proc(VALUE control_frame)
{
struct RubyInternalControlFrame * cfp;
Data_Get_Struct(control_frame, struct RubyInternalControlFrame, cfp);
return cfp->control_frame->proc;
}
|
#self ⇒ Object
Return the frame’s self member.
56 57 58 59 60 61 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 56
static VALUE control_frame_self(VALUE control_frame)
{
struct RubyInternalControlFrame * cfp;
Data_Get_Struct(control_frame, struct RubyInternalControlFrame, cfp);
return cfp->control_frame->self;
}
|