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.339 by root, Mon Dec 15 00:28:30 2008 UTC vs.
Revision 1.340 by root, Mon Dec 15 00:30:40 2008 UTC

574 if (expect_false (c->on_enter)) 574 if (expect_false (c->on_enter))
575 { 575 {
576 int i; 576 int i;
577 577
578 for (i = 0; i <= AvFILLp (c->on_enter); ++i) 578 for (i = 0; i <= AvFILLp (c->on_enter); ++i)
579 on_enterleave_call (AvARRAY (c->on_enter)[i]); 579 on_enterleave_call (aTHX_ AvARRAY (c->on_enter)[i]);
580 } 580 }
581} 581}
582 582
583static void 583static void
584save_perl (pTHX_ Coro__State c) 584save_perl (pTHX_ Coro__State c)
586 if (expect_false (c->on_leave)) 586 if (expect_false (c->on_leave))
587 { 587 {
588 int i; 588 int i;
589 589
590 for (i = AvFILLp (c->on_leave); i >= 0; --i) 590 for (i = AvFILLp (c->on_leave); i >= 0; --i)
591 on_enterleave_call (AvARRAY (c->on_leave)[i]); 591 on_enterleave_call (aTHX_ AvARRAY (c->on_leave)[i]);
592 } 592 }
593 593
594 c->except = CORO_THROW; 594 c->except = CORO_THROW;
595 c->slf_frame = slf_frame; 595 c->slf_frame = slf_frame;
596 596
2347 2347
2348 POPSTACK; 2348 POPSTACK;
2349} 2349}
2350 2350
2351static SV * 2351static SV *
2352coro_avp_pop_and_free (AV **avp) 2352coro_avp_pop_and_free (pTHX_ AV **avp)
2353{ 2353{
2354 AV *av = *avp; 2354 AV *av = *avp;
2355 SV *res = av_pop (av); 2355 SV *res = av_pop (av);
2356 2356
2357 if (AvFILLp (av) < 0) 2357 if (AvFILLp (av) < 0)
2364} 2364}
2365 2365
2366static void 2366static void
2367coro_pop_on_enter (pTHX_ void *coro) 2367coro_pop_on_enter (pTHX_ void *coro)
2368{ 2368{
2369 SV *cb = coro_avp_pop_and_free (&((struct coro *)coro)->on_enter); 2369 SV *cb = coro_avp_pop_and_free (aTHX_ &((struct coro *)coro)->on_enter);
2370 SvREFCNT_dec (cb); 2370 SvREFCNT_dec (cb);
2371} 2371}
2372 2372
2373static void 2373static void
2374coro_pop_on_leave (pTHX_ void *coro) 2374coro_pop_on_leave (pTHX_ void *coro)
2375{ 2375{
2376 SV *cb = coro_avp_pop_and_free (&((struct coro *)coro)->on_leave); 2376 SV *cb = coro_avp_pop_and_free (aTHX_ &((struct coro *)coro)->on_leave);
2377 on_enterleave_call (sv_2mortal (cb)); 2377 on_enterleave_call (aTHX_ sv_2mortal (cb));
2378} 2378}
2379 2379
2380/*****************************************************************************/ 2380/*****************************************************************************/
2381/* PerlIO::cede */ 2381/* PerlIO::cede */
2382 2382
3409 CODE: 3409 CODE:
3410{ 3410{
3411 struct coro *coro = SvSTATE_current; 3411 struct coro *coro = SvSTATE_current;
3412 AV **avp = ix ? &coro->on_leave : &coro->on_enter; 3412 AV **avp = ix ? &coro->on_leave : &coro->on_enter;
3413 3413
3414 block = (SV *)coro_sv_2cv (block); 3414 block = (SV *)coro_sv_2cv (aTHX_ block);
3415 3415
3416 if (!*avp) 3416 if (!*avp)
3417 *avp = newAV (); 3417 *avp = newAV ();
3418 3418
3419 av_push (*avp, SvREFCNT_inc (block)); 3419 av_push (*avp, SvREFCNT_inc (block));

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines