e$B%o%J%Y$H?=$7$^$9!#e(B
[ruby-Bugs-19304] e$B$KBP$9$k%Q%C%A$r=q$-$^$7$?!#e(B
define_method e$B$G:n$i$l$?%a%=%C%I$Ne(B return
e$B$NHt$S@h$,D>A0$N%U%l!<%`$K$J$j$^$9!#e(B
e$B$G$9$,!“e(Brb_mod_define_method() e$BCf$G$Oe(B iseq
e$B$r%3%T!<$;$:$Ke(B
proc->block.iseq->defined_method_id = id;
e$B$N$h$&$KCM$r=q$-9~$s$G$$$k$?$ae(B
Proc e$B%*%V%8%’%/%H$,=q$-49$($i$l$F8mG’<1$5$l$k2DG=@-$,$”$j$^$9!#e(B
iseq
e$B$r0BA4$K%3%T!<$9$kJ}K!$,$o$+$i$J$+$C$?$N$G$=$N$^$^$K$7$F$7$^$$$^$7$?!#e(B
define_method e$B$Ke(B return e$B$r4^$s$@e(B Proc
e$B%*%V%8%’%/%H$rEO$7!"$5$i$K$=$l$re(B
Proc
e$B$H$7$F;H$$$^$o$9!"$H$$$&FC<l$J>lLL0J30$G$OLdBj$J$$$H;W$$$^$9!#e(B
Index: vm_insnhelper.c
— vm_insnhelper.c (revision 15984)
+++ vm_insnhelper.c (working copy)
@@ -1288,6 +1288,7 @@
VALUE *dfp = GET_DFP();
int is_orphan = 1;
- pt = 0;
/**- check orphan:
/
@@ -1296,6 +1297,11 @@
if (VM_FRAME_TYPE(cfp) == FRAME_MAGIC_LAMBDA) {
/ in lambda */
is_orphan = 0;
- check orphan:
-
if (BUILTIN_TYPE(cfp->iseq) != T_NODE) {
-
if (cfp->iseq->defined_method_id) {
-
pt = GET_DFP();
-
}
-
} break; } }
@@ -1311,7 +1317,9 @@
vm_localjump_error(“unexpected return”, throwobj, TAG_RETURN);
}
- pt = GET_LFP();
- if (!pt) {
-
pt = GET_LFP();
- }
}
else {
rb_bug(“isns(throw): unsupport throw type”);