… | |
… | |
1909 | SV *invoke = hv_delete (hv, "_invoke", sizeof ("_invoke") - 1, 0); |
1909 | SV *invoke = hv_delete (hv, "_invoke", sizeof ("_invoke") - 1, 0); |
1910 | AV *invoke_av; |
1910 | AV *invoke_av; |
1911 | int i, len; |
1911 | int i, len; |
1912 | |
1912 | |
1913 | if (!invoke) |
1913 | if (!invoke) |
|
|
1914 | { |
|
|
1915 | SvREFCNT_dec (PL_diehook); PL_diehook = 0; |
1914 | croak ("\3async_pool terminate\2\n"); |
1916 | croak ("\3async_pool terminate\2\n"); |
|
|
1917 | } |
1915 | |
1918 | |
1916 | SvREFCNT_dec (coro->saved_deffh); |
1919 | SvREFCNT_dec (coro->saved_deffh); |
1917 | coro->saved_deffh = SvREFCNT_inc ((SV *)PL_defoutgv); |
1920 | coro->saved_deffh = SvREFCNT_inc ((SV *)PL_defoutgv); |
1918 | |
1921 | |
1919 | hv_store (hv, "desc", sizeof ("desc") - 1, |
1922 | hv_store (hv, "desc", sizeof ("desc") - 1, |
… | |
… | |
1945 | SvREFCNT_dec ((SV *)PL_defoutgv); PL_defoutgv = (GV *)coro->saved_deffh; |
1948 | SvREFCNT_dec ((SV *)PL_defoutgv); PL_defoutgv = (GV *)coro->saved_deffh; |
1946 | coro->saved_deffh = 0; |
1949 | coro->saved_deffh = 0; |
1947 | |
1950 | |
1948 | if (coro_rss (aTHX_ coro) > SvIV (sv_pool_rss) |
1951 | if (coro_rss (aTHX_ coro) > SvIV (sv_pool_rss) |
1949 | || av_len (av_async_pool) + 1 >= SvIV (sv_pool_size)) |
1952 | || av_len (av_async_pool) + 1 >= SvIV (sv_pool_size)) |
|
|
1953 | { |
|
|
1954 | SvREFCNT_dec (PL_diehook); PL_diehook = 0; |
1950 | croak ("\3async_pool terminate\2\n"); |
1955 | croak ("\3async_pool terminate\2\n"); |
|
|
1956 | } |
1951 | |
1957 | |
1952 | av_clear (GvAV (PL_defgv)); |
1958 | av_clear (GvAV (PL_defgv)); |
1953 | hv_store ((HV *)SvRV (coro_current), "desc", sizeof ("desc") - 1, |
1959 | hv_store ((HV *)SvRV (coro_current), "desc", sizeof ("desc") - 1, |
1954 | newSVpvn ("[async_pool idle]", sizeof ("[async_pool idle]") - 1), 0); |
1960 | newSVpvn ("[async_pool idle]", sizeof ("[async_pool idle]") - 1), 0); |
1955 | |
1961 | |