… | |
… | |
1755 | SV *invoke = hv_delete (hv, "_invoke", sizeof ("_invoke") - 1, 0); |
1755 | SV *invoke = hv_delete (hv, "_invoke", sizeof ("_invoke") - 1, 0); |
1756 | AV *invoke_av; |
1756 | AV *invoke_av; |
1757 | int i, len; |
1757 | int i, len; |
1758 | |
1758 | |
1759 | if (!invoke) |
1759 | if (!invoke) |
1760 | croak ("\3terminate\2\n"); |
1760 | croak ("\3async_pool terminate\2\n"); |
1761 | |
1761 | |
1762 | SvREFCNT_dec (coro->saved_deffh); |
1762 | SvREFCNT_dec (coro->saved_deffh); |
1763 | coro->saved_deffh = SvREFCNT_inc ((SV *)PL_defoutgv); |
1763 | coro->saved_deffh = SvREFCNT_inc ((SV *)PL_defoutgv); |
1764 | |
1764 | |
1765 | hv_store (hv, "desc", sizeof ("desc") - 1, |
1765 | hv_store (hv, "desc", sizeof ("desc") - 1, |
… | |
… | |
1791 | SvREFCNT_dec ((SV *)PL_defoutgv); PL_defoutgv = (GV *)coro->saved_deffh; |
1791 | SvREFCNT_dec ((SV *)PL_defoutgv); PL_defoutgv = (GV *)coro->saved_deffh; |
1792 | coro->saved_deffh = 0; |
1792 | coro->saved_deffh = 0; |
1793 | |
1793 | |
1794 | if (coro_rss (aTHX_ coro) > SvIV (sv_pool_rss) |
1794 | if (coro_rss (aTHX_ coro) > SvIV (sv_pool_rss) |
1795 | || av_len (av_async_pool) + 1 >= SvIV (sv_pool_size)) |
1795 | || av_len (av_async_pool) + 1 >= SvIV (sv_pool_size)) |
1796 | croak ("\3terminate\2\n"); |
1796 | croak ("\3async_pool terminate\2\n"); |
1797 | |
1797 | |
1798 | av_clear (GvAV (PL_defgv)); |
1798 | av_clear (GvAV (PL_defgv)); |
1799 | hv_store ((HV *)SvRV (coro_current), "desc", sizeof ("desc") - 1, |
1799 | hv_store ((HV *)SvRV (coro_current), "desc", sizeof ("desc") - 1, |
1800 | newSVpvn ("[async_pool idle]", sizeof ("[async_pool idle]") - 1), 0); |
1800 | newSVpvn ("[async_pool idle]", sizeof ("[async_pool idle]") - 1), 0); |
1801 | |
1801 | |