ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/Coro/State.xs
(Generate patch)

Comparing Coro/Coro/State.xs (file contents):
Revision 1.457 by root, Fri Jun 17 04:49:22 2016 UTC vs.
Revision 1.462 by root, Wed Jun 22 20:24:38 2016 UTC

730static void 730static void
731swap_svs_enter (pTHX_ Coro__State c) 731swap_svs_enter (pTHX_ Coro__State c)
732{ 732{
733 int i; 733 int i;
734 734
735 for (i = 0; i <= AvFILLp (c->swap_sv); i += 2)
736 swap_sv (AvARRAY (c->swap_sv)[i], AvARRAY (c->swap_sv)[i + 1]);
737}
738
739static void
740swap_svs_leave (pTHX_ Coro__State c)
741{
742 int i;
743
735 for (i = AvFILLp (c->swap_sv) - 1; i >= 0; i -= 2) 744 for (i = AvFILLp (c->swap_sv) - 1; i >= 0; i -= 2)
736 swap_sv (AvARRAY (c->swap_sv)[i], AvARRAY (c->swap_sv)[i + 1]);
737}
738
739static void
740swap_svs_leave (pTHX_ Coro__State c)
741{
742 int i;
743
744 for (i = 0; i <= AvFILLp (c->swap_sv); i += 2)
745 swap_sv (AvARRAY (c->swap_sv)[i], AvARRAY (c->swap_sv)[i + 1]); 745 swap_sv (AvARRAY (c->swap_sv)[i], AvARRAY (c->swap_sv)[i + 1]);
746} 746}
747 747
748#define SWAP_SVS_ENTER(coro) \ 748#define SWAP_SVS_ENTER(coro) \
749 if (ecb_expect_false ((coro)->swap_sv)) \ 749 if (ecb_expect_false ((coro)->swap_sv)) \
963#endif 963#endif
964 964
965 New(54,PL_savestack,24,ANY); 965 New(54,PL_savestack,24,ANY);
966 PL_savestack_ix = 0; 966 PL_savestack_ix = 0;
967 PL_savestack_max = 24; 967 PL_savestack_max = 24;
968#if !PERL_VERSION_ATLEAST (5,24,0)
969 /* perl 5.24 moves SS_MAXPUSH optimisation from */
970 /* the header macros to PL_savestack_max */
971 PL_savestack_max -= SS_MAXPUSH;
972#endif
968 973
969#if !PERL_VERSION_ATLEAST (5,10,0) 974#if !PERL_VERSION_ATLEAST (5,10,0)
970 New(54,PL_retstack,4,OP*); 975 New(54,PL_retstack,4,OP*);
971 PL_retstack_ix = 0; 976 PL_retstack_ix = 0;
972 PL_retstack_max = 4; 977 PL_retstack_max = 4;
2426 else 2431 else
2427 { 2432 {
2428 av_clear (GvAV (PL_defgv)); 2433 av_clear (GvAV (PL_defgv));
2429 hv_store (hv, "desc", sizeof ("desc") - 1, SvREFCNT_inc_NN (sv_async_pool_idle), 0); 2434 hv_store (hv, "desc", sizeof ("desc") - 1, SvREFCNT_inc_NN (sv_async_pool_idle), 0);
2430 2435
2436 if (ecb_expect_false (coro->swap_sv))
2437 {
2438 swap_svs_leave (coro);
2439 SvREFCNT_dec_NN (coro->swap_sv);
2440 coro->swap_sv = 0;
2441 }
2442
2431 coro->prio = 0; 2443 coro->prio = 0;
2432 2444
2433 if (coro->cctx && (coro->cctx->flags & CC_TRACE)) 2445 if (ecb_expect_false (coro->cctx) && ecb_expect_false (coro->cctx->flags & CC_TRACE))
2434 api_trace (aTHX_ coro_current, 0); 2446 api_trace (aTHX_ coro_current, 0);
2435 2447
2436 frame->prepare = prepare_schedule; 2448 frame->prepare = prepare_schedule;
2437 av_push (av_async_pool, SvREFCNT_inc (hv)); 2449 av_push (av_async_pool, SvREFCNT_inc (hv));
2438 } 2450 }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines