… | |
… | |
1484 | coro_state_destroy (pTHX_ struct coro *coro) |
1484 | coro_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 | |
3340 | void |
3340 | void |
|
|
3341 | suspend (Coro::State self) |
|
|
3342 | PROTOTYPE: $ |
|
|
3343 | CODE: |
|
|
3344 | self->flags |= CF_SUSPENDED; |
|
|
3345 | |
|
|
3346 | void |
|
|
3347 | resume (Coro::State self) |
|
|
3348 | PROTOTYPE: $ |
|
|
3349 | CODE: |
|
|
3350 | self->flags &= ~CF_SUSPENDED; |
|
|
3351 | |
|
|
3352 | void |
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 | |
3345 | void |
3357 | void |
… | |
… | |
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 | |
|
|
3527 | MODULE = Coro::State PACKAGE = Coro::SemaphoreSet |
|
|
3528 | |
|
|
3529 | void |
|
|
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 | |
3515 | MODULE = Coro::State PACKAGE = Coro::Signal |
3543 | MODULE = Coro::State PACKAGE = Coro::Signal |
3516 | |
3544 | |
3517 | SV * |
3545 | SV * |
3518 | new (SV *klass) |
3546 | new (SV *klass) |
3519 | CODE: |
3547 | CODE: |