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.312 by root, Thu Nov 20 03:10:30 2008 UTC vs.
Revision 1.313 by root, Thu Nov 20 03:22:59 2008 UTC

1760 1760
1761 if (!coro->invoke_cb) 1761 if (!coro->invoke_cb)
1762 return 1; /* loop till we have invoke */ 1762 return 1; /* loop till we have invoke */
1763 else 1763 else
1764 { 1764 {
1765 int i, len;
1766
1767 hv_store (hv, "desc", sizeof ("desc") - 1, 1765 hv_store (hv, "desc", sizeof ("desc") - 1,
1768 newSVpvn ("[async_pool]", sizeof ("[async_pool]") - 1), 0); 1766 newSVpvn ("[async_pool]", sizeof ("[async_pool]") - 1), 0);
1769 1767
1770 coro->saved_deffh = SvREFCNT_inc_NN ((SV *)PL_defoutgv); 1768 coro->saved_deffh = SvREFCNT_inc_NN ((SV *)PL_defoutgv);
1771
1772 len = av_len (coro->invoke_av);
1773 1769
1774 { 1770 {
1775 dSP; 1771 dSP;
1776 XPUSHs (sv_2mortal (coro->invoke_cb)); coro->invoke_cb = 0; 1772 XPUSHs (sv_2mortal (coro->invoke_cb)); coro->invoke_cb = 0;
1777 PUTBACK; 1773 PUTBACK;
1841 SV *data = (SV *)GENSUB_ARG; 1837 SV *data = (SV *)GENSUB_ARG;
1842 1838
1843 if (SvTYPE (SvRV (data)) != SVt_PVAV) 1839 if (SvTYPE (SvRV (data)) != SVt_PVAV)
1844 { 1840 {
1845 /* first call, set args */ 1841 /* first call, set args */
1846 int i;
1847 AV *av = newAV (); 1842 AV *av = newAV ();
1848 SV *coro = SvRV (data); 1843 SV *coro = SvRV (data);
1849 1844
1850 SvRV_set (data, (SV *)av); 1845 SvRV_set (data, (SV *)av);
1851 api_ready (aTHX_ coro); 1846 api_ready (aTHX_ coro);
3091 PUSHMARK (SP); 3086 PUSHMARK (SP);
3092 EXTEND (SP, 2); 3087 EXTEND (SP, 2);
3093 PUSHs (sv_Coro); 3088 PUSHs (sv_Coro);
3094 PUSHs ((SV *)cv_pool_handler); 3089 PUSHs ((SV *)cv_pool_handler);
3095 PUTBACK; 3090 PUTBACK;
3096 call_sv (cv_coro_new, G_SCALAR); 3091 call_sv ((SV *)cv_coro_new, G_SCALAR);
3097 SPAGAIN; 3092 SPAGAIN;
3098 3093
3099 hv = (HV *)SvREFCNT_inc_NN (SvRV (POPs)); 3094 hv = (HV *)SvREFCNT_inc_NN (SvRV (POPs));
3100 } 3095 }
3101 3096
3106 assert (!coro->invoke_av); 3101 assert (!coro->invoke_av);
3107 coro->invoke_cb = SvREFCNT_inc (cb); 3102 coro->invoke_cb = SvREFCNT_inc (cb);
3108 coro->invoke_av = av; 3103 coro->invoke_av = av;
3109 } 3104 }
3110 3105
3111 api_ready ((SV *)hv); 3106 api_ready (aTHX_ (SV *)hv);
3112 3107
3113 if (GIMME_V != G_VOID) 3108 if (GIMME_V != G_VOID)
3114 XPUSHs (sv_2mortal (newRV_noinc ((SV *)hv))); 3109 XPUSHs (sv_2mortal (newRV_noinc ((SV *)hv)));
3115 else 3110 else
3116 SvREFCNT_dec (hv); 3111 SvREFCNT_dec (hv);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines