ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/Coro/State.xs
(Generate patch)

Comparing Coro/Coro/State.xs (file contents):
Revision 1.39 by root, Sun Nov 25 20:04:05 2001 UTC vs.
Revision 1.40 by root, Tue Nov 27 01:41:41 2001 UTC

56 56
57 /* optionally saved, might be zero */ 57 /* optionally saved, might be zero */
58 AV *defav; 58 AV *defav;
59 SV *defsv; 59 SV *defsv;
60 SV *errsv; 60 SV *errsv;
61 /* TODO: PL_pmop might be nice && effortless to save. */
62 61
63 /* saved global state not related to stacks */ 62 /* saved global state not related to stacks */
64 U8 dowarn; 63 U8 dowarn;
65 I32 in_eval; 64 I32 in_eval;
66 65
88 I32 savestack_max; 87 I32 savestack_max;
89 OP **retstack; 88 OP **retstack;
90 I32 retstack_ix; 89 I32 retstack_ix;
91 I32 retstack_max; 90 I32 retstack_max;
92 COP *curcop; 91 COP *curcop;
92 PMOP *curpm;
93 JMPENV *top_env; 93 JMPENV *top_env;
94 94
95 /* data associated with this coroutine (initial args) */ 95 /* data associated with this coroutine (initial args) */
96 AV *args; 96 AV *args;
97}; 97};
598 dSP; 598 dSP;
599 Coro__State ctx = (Coro__State)arg; 599 Coro__State ctx = (Coro__State)arg;
600 SV *sub_init = (SV*)get_cv(SUB_INIT, FALSE); 600 SV *sub_init = (SV*)get_cv(SUB_INIT, FALSE);
601 601
602 coro_init_stacks (aTHX); 602 coro_init_stacks (aTHX);
603 PL_curpm = 0; /* segfault on first access */
603 /*PL_curcop = 0;*/ 604 /*PL_curcop = 0;*/
604 /*PL_in_eval = PL_in_eval;*/ /* inherit */ 605 /*PL_in_eval = PL_in_eval;*/ /* inherit */
605 SvREFCNT_dec (GvAV (PL_defgv)); 606 SvREFCNT_dec (GvAV (PL_defgv));
606 GvAV (PL_defgv) = ctx->args; 607 GvAV (PL_defgv) = ctx->args;
607 608
868 next = coro_deq (PRIO_MIN); 869 next = coro_deq (PRIO_MIN);
869 870
870 if (!next) 871 if (!next)
871 next = SvREFCNT_inc (SvRV (GvSV (coro_idle))); 872 next = SvREFCNT_inc (SvRV (GvSV (coro_idle)));
872 873
874 /* free this only after the transfer */
873 coro_mortal = prev; 875 coro_mortal = prev;
874 SV_CORO (prev, "Coro::schedule"); 876 SV_CORO (prev, "Coro::schedule");
875 877
876 SvRV (GvSV (coro_current)) = next; 878 SvRV (GvSV (coro_current)) = next;
877 879
900 coro_state_stash = gv_stashpv ("Coro::State", TRUE); 902 coro_state_stash = gv_stashpv ("Coro::State", TRUE);
901 903
902 newCONSTSUB (coro_state_stash, "SAVE_DEFAV", newSViv (TRANSFER_SAVE_DEFAV)); 904 newCONSTSUB (coro_state_stash, "SAVE_DEFAV", newSViv (TRANSFER_SAVE_DEFAV));
903 newCONSTSUB (coro_state_stash, "SAVE_DEFSV", newSViv (TRANSFER_SAVE_DEFSV)); 905 newCONSTSUB (coro_state_stash, "SAVE_DEFSV", newSViv (TRANSFER_SAVE_DEFSV));
904 newCONSTSUB (coro_state_stash, "SAVE_ERRSV", newSViv (TRANSFER_SAVE_ERRSV)); 906 newCONSTSUB (coro_state_stash, "SAVE_ERRSV", newSViv (TRANSFER_SAVE_ERRSV));
907 newCONSTSUB (coro_state_stash, "SAVE_CURPM", newSViv (TRANSFER_SAVE_CURPM));
905 newCONSTSUB (coro_state_stash, "SAVE_CCTXT", newSViv (TRANSFER_SAVE_CCTXT)); 908 newCONSTSUB (coro_state_stash, "SAVE_CCTXT", newSViv (TRANSFER_SAVE_CCTXT));
906 909
907 if (!padlist_cache) 910 if (!padlist_cache)
908 padlist_cache = newHV (); 911 padlist_cache = newHV ();
909 912

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines