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.
53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 53 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.
27 28 29 30 31 32 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 27 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.
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 115 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.
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 86 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.
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 137 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.
73 74 75 76 77 78 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 73 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.
40 41 42 43 44 45 |
# File 'ext/internal/vm/control_frame/control_frame.c', line 40 static VALUE control_frame_self(VALUE control_frame) { struct RubyInternalControlFrame * cfp; Data_Get_Struct(control_frame, struct RubyInternalControlFrame, cfp); return cfp->control_frame->self; } |