… | |
… | |
1379 | if (coro->hv) |
1379 | if (coro->hv) |
1380 | XPUSHs (sv_2mortal (newRV_inc ((SV *)coro->hv))); |
1380 | XPUSHs (sv_2mortal (newRV_inc ((SV *)coro->hv))); |
1381 | } |
1381 | } |
1382 | |
1382 | |
1383 | void |
1383 | void |
1384 | _eval (Coro::State coro, SV *coderef) |
1384 | call (Coro::State coro, SV *coderef) |
|
|
1385 | ALIAS: |
|
|
1386 | eval = 1 |
1385 | CODE: |
1387 | CODE: |
1386 | { |
1388 | { |
1387 | if (coro->mainstack) |
1389 | if (coro->mainstack) |
1388 | { |
1390 | { |
1389 | struct coro temp; |
1391 | struct coro temp; |
… | |
… | |
1400 | dSP; |
1402 | dSP; |
1401 | ENTER; |
1403 | ENTER; |
1402 | SAVETMPS; |
1404 | SAVETMPS; |
1403 | PUSHMARK (SP); |
1405 | PUSHMARK (SP); |
1404 | PUTBACK; |
1406 | PUTBACK; |
|
|
1407 | if (ix) |
|
|
1408 | eval_sv (coderef, 0); |
|
|
1409 | else |
1405 | call_sv (coderef, G_KEEPERR | G_EVAL | G_VOID | G_DISCARD); |
1410 | call_sv (coderef, G_KEEPERR | G_EVAL | G_VOID | G_DISCARD); |
1406 | SPAGAIN; |
1411 | SPAGAIN; |
1407 | FREETMPS; |
1412 | FREETMPS; |
1408 | LEAVE; |
1413 | LEAVE; |
1409 | PUTBACK; |
1414 | PUTBACK; |
1410 | } |
1415 | } |