… | |
… | |
963 | } |
963 | } |
964 | |
964 | |
965 | prev__cctx = prev->cctx; |
965 | prev__cctx = prev->cctx; |
966 | |
966 | |
967 | /* possibly "free" the cctx */ |
967 | /* possibly "free" the cctx */ |
968 | if (prev__cctx->idle_sp == STACKLEVEL) |
968 | if (prev__cctx->idle_sp == STACKLEVEL && !(prev__cctx->flags & CC_TRACE)) |
969 | { |
969 | { |
970 | /* I assume that STACKLEVEL is a stronger indicator than PL_top_env changes */ |
970 | /* I assume that STACKLEVEL is a stronger indicator than PL_top_env changes */ |
971 | assert (("ERROR: current top_env must equal previous top_env", PL_top_env == prev__cctx->idle_te)); |
971 | assert (("ERROR: current top_env must equal previous top_env", PL_top_env == prev__cctx->idle_te)); |
972 | |
972 | |
973 | prev->cctx = 0; |
973 | prev->cctx = 0; |
… | |
… | |
1564 | else |
1564 | else |
1565 | if (coro->cctx && coro->cctx->flags & CC_TRACE) |
1565 | if (coro->cctx && coro->cctx->flags & CC_TRACE) |
1566 | { |
1566 | { |
1567 | coro->cctx->flags &= ~(CC_TRACE | CC_TRACE_ALL); |
1567 | coro->cctx->flags &= ~(CC_TRACE | CC_TRACE_ALL); |
1568 | coro->cctx->flags |= CC_NOREUSE; |
1568 | coro->cctx->flags |= CC_NOREUSE; |
|
|
1569 | |
|
|
1570 | if (coro->flags & CF_RUNNING) |
|
|
1571 | PL_runops = RUNOPS_DEFAULT; |
|
|
1572 | else |
|
|
1573 | coro->runops = RUNOPS_DEFAULT; |
1569 | } |
1574 | } |
1570 | |
1575 | |
1571 | SV * |
1576 | SV * |
1572 | has_stack (Coro::State coro) |
1577 | has_stack (Coro::State coro) |
1573 | PROTOTYPE: $ |
1578 | PROTOTYPE: $ |