… | |
… | |
614 | GvSV (PL_errgv) = newSV (0); |
614 | GvSV (PL_errgv) = newSV (0); |
615 | GvSV (irsgv) = newSVpvn ("\n", 1); sv_magic (GvSV (irsgv), (SV *)irsgv, PERL_MAGIC_sv, "/", 0); |
615 | GvSV (irsgv) = newSVpvn ("\n", 1); sv_magic (GvSV (irsgv), (SV *)irsgv, PERL_MAGIC_sv, "/", 0); |
616 | PL_rs = newSVsv (GvSV (irsgv)); |
616 | PL_rs = newSVsv (GvSV (irsgv)); |
617 | PL_defoutgv = SvREFCNT_inc (stdoutgv); |
617 | PL_defoutgv = SvREFCNT_inc (stdoutgv); |
618 | |
618 | |
|
|
619 | ENTER; /* necessary e.g. for dounwind */ |
|
|
620 | |
619 | { |
621 | { |
620 | dSP; |
622 | dSP; |
621 | LOGOP myop; |
623 | LOGOP myop; |
622 | |
624 | |
623 | Zero (&myop, 1, LOGOP); |
625 | Zero (&myop, 1, LOGOP); |
624 | myop.op_next = Nullop; |
626 | myop.op_next = Nullop; |
625 | myop.op_flags = OPf_WANT_VOID; |
627 | myop.op_flags = OPf_WANT_VOID; |
626 | |
628 | |
627 | PUSHMARK (SP); |
629 | PUSHMARK (SP); |
628 | XPUSHs (av_shift (GvAV (PL_defgv))); |
630 | XPUSHs (sv_2mortal (av_shift (GvAV (PL_defgv)))); |
629 | PUTBACK; |
631 | PUTBACK; |
630 | PL_op = (OP *)&myop; |
632 | PL_op = (OP *)&myop; |
631 | PL_op = PL_ppaddr[OP_ENTERSUB](aTHX); |
633 | PL_op = PL_ppaddr[OP_ENTERSUB](aTHX); |
632 | SPAGAIN; |
634 | SPAGAIN; |
633 | } |
635 | } |
634 | |
|
|
635 | ENTER; /* necessary e.g. for dounwind */ |
|
|
636 | } |
636 | } |
637 | |
637 | |
638 | static void |
638 | static void |
639 | coro_destroy (pTHX_ struct coro *coro) |
639 | coro_destroy (pTHX_ struct coro *coro) |
640 | { |
640 | { |
… | |
… | |
1428 | |
1428 | |
1429 | coro->hv = hv = newHV (); |
1429 | coro->hv = hv = newHV (); |
1430 | sv_magicext ((SV *)hv, 0, PERL_MAGIC_ext, &coro_state_vtbl, (char *)coro, 0)->mg_flags |= MGf_DUP; |
1430 | sv_magicext ((SV *)hv, 0, PERL_MAGIC_ext, &coro_state_vtbl, (char *)coro, 0)->mg_flags |= MGf_DUP; |
1431 | RETVAL = sv_bless (newRV_noinc ((SV *)hv), gv_stashpv (klass, 1)); |
1431 | RETVAL = sv_bless (newRV_noinc ((SV *)hv), gv_stashpv (klass, 1)); |
1432 | |
1432 | |
|
|
1433 | av_extend (coro->args, items - 1); |
|
|
1434 | |
1433 | for (i = 1; i < items; i++) |
1435 | for (i = 1; i < items; i++) |
1434 | av_push (coro->args, newSVsv (ST (i))); |
1436 | av_push (coro->args, newSVsv (ST (i))); |
1435 | } |
1437 | } |
1436 | OUTPUT: |
1438 | OUTPUT: |
1437 | RETVAL |
1439 | RETVAL |