… | |
… | |
2331 | if (PL_op->op_ppaddr != PL_ppaddr [OP_ENTERSUB] |
2331 | if (PL_op->op_ppaddr != PL_ppaddr [OP_ENTERSUB] |
2332 | && PL_op->op_ppaddr != pp_slf) |
2332 | && PL_op->op_ppaddr != pp_slf) |
2333 | croak ("FATAL: Coro SLF calls can only be made normally, not via goto or any other means, caught"); |
2333 | croak ("FATAL: Coro SLF calls can only be made normally, not via goto or any other means, caught"); |
2334 | |
2334 | |
2335 | CvFLAGS (cv) |= CVf_SLF; |
2335 | CvFLAGS (cv) |= CVf_SLF; |
2336 | CvNODEBUG_on (cv); |
|
|
2337 | CvXSUBANY (cv).any_ptr = (void *)init_cb; |
2336 | CvXSUBANY (cv).any_ptr = (void *)init_cb; |
2338 | slf_cv = cv; |
2337 | slf_cv = cv; |
2339 | |
2338 | |
2340 | /* we patch the op, and then re-run the whole call */ |
2339 | /* we patch the op, and then re-run the whole call */ |
2341 | /* we have to put the same argument on the stack for this to work */ |
2340 | /* we have to put the same argument on the stack for this to work */ |