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.343 by root, Mon Dec 15 16:41:43 2008 UTC vs.
Revision 1.345 by root, Wed Dec 17 04:57:07 2008 UTC

1484coro_state_destroy (pTHX_ struct coro *coro) 1484coro_state_destroy (pTHX_ struct coro *coro)
1485{ 1485{
1486 if (coro->flags & CF_DESTROYED) 1486 if (coro->flags & CF_DESTROYED)
1487 return 0; 1487 return 0;
1488 1488
1489 if (coro->on_destroy) 1489 if (coro->on_destroy && !PL_dirty)
1490 coro->on_destroy (aTHX_ coro); 1490 coro->on_destroy (aTHX_ coro);
1491 1491
1492 coro->flags |= CF_DESTROYED; 1492 coro->flags |= CF_DESTROYED;
1493 1493
1494 if (coro->flags & CF_READY) 1494 if (coro->flags & CF_READY)
3336 RETVAL = coro_nready; 3336 RETVAL = coro_nready;
3337 OUTPUT: 3337 OUTPUT:
3338 RETVAL 3338 RETVAL
3339 3339
3340void 3340void
3341suspend (Coro::State self)
3342 PROTOTYPE: $
3343 CODE:
3344 self->flags |= CF_SUSPENDED;
3345
3346void
3347resume (Coro::State self)
3348 PROTOTYPE: $
3349 CODE:
3350 self->flags &= ~CF_SUSPENDED;
3351
3352void
3341_pool_handler (...) 3353_pool_handler (...)
3342 CODE: 3354 CODE:
3343 CORO_EXECUTE_SLF_XS (slf_init_pool_handler); 3355 CORO_EXECUTE_SLF_XS (slf_init_pool_handler);
3344 3356
3345void 3357void
3510 for (i = 1; i <= wcount; ++i) 3522 for (i = 1; i <= wcount; ++i)
3511 PUSHs (sv_2mortal (newRV_inc (AvARRAY (av)[i]))); 3523 PUSHs (sv_2mortal (newRV_inc (AvARRAY (av)[i])));
3512 } 3524 }
3513} 3525}
3514 3526
3527MODULE = Coro::State PACKAGE = Coro::SemaphoreSet
3528
3529void
3530_may_delete (SV *sem, int count, int extra_refs)
3531 PPCODE:
3532{
3533 AV *av = (AV *)SvRV (sem);
3534
3535 if (SvREFCNT ((SV *)av) == 1 + extra_refs
3536 && AvFILLp (av) == 0 /* no waiters, just count */
3537 && SvIV (AvARRAY (av)[0]) == count)
3538 XSRETURN_YES;
3539
3540 XSRETURN_NO;
3541}
3542
3515MODULE = Coro::State PACKAGE = Coro::Signal 3543MODULE = Coro::State PACKAGE = Coro::Signal
3516 3544
3517SV * 3545SV *
3518new (SV *klass) 3546new (SV *klass)
3519 CODE: 3547 CODE:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines