… | |
… | |
817 | |
817 | |
818 | PUTBACK; |
818 | PUTBACK; |
819 | } |
819 | } |
820 | |
820 | |
821 | /* allocate some space on the context stack for our purposes */ |
821 | /* allocate some space on the context stack for our purposes */ |
822 | if (ecb_expect_false (cxstack_ix + SLOT_COUNT >= cxstack_max)) |
822 | if (ecb_expect_false (cxstack_ix + (int)SLOT_COUNT >= cxstack_max)) |
823 | { |
823 | { |
824 | unsigned int i; |
824 | unsigned int i; |
825 | |
825 | |
826 | for (i = 0; i < SLOT_COUNT; ++i) |
826 | for (i = 0; i < SLOT_COUNT; ++i) |
827 | CXINC; |
827 | CXINC; |
… | |
… | |
3343 | #endif |
3343 | #endif |
3344 | |
3344 | |
3345 | #if CORO_JIT |
3345 | #if CORO_JIT |
3346 | |
3346 | |
3347 | static void ecb_noinline ecb_cold |
3347 | static void ecb_noinline ecb_cold |
3348 | pushav_3uv (pTHX_ UV a, UV b, UV c) |
3348 | pushav_4uv (pTHX_ UV a, UV b, UV c, UV d) |
3349 | { |
3349 | { |
3350 | dSP; |
3350 | dSP; |
3351 | AV *av = newAV (); |
3351 | AV *av = newAV (); |
3352 | |
3352 | |
|
|
3353 | av_store (av, 3, newSVuv (d)); |
3353 | av_store (av, 2, newSVuv (c)); |
3354 | av_store (av, 2, newSVuv (c)); |
3354 | av_store (av, 1, newSVuv (b)); |
3355 | av_store (av, 1, newSVuv (b)); |
3355 | av_store (av, 0, newSVuv (a)); |
3356 | av_store (av, 0, newSVuv (a)); |
3356 | |
3357 | |
3357 | XPUSHs (sv_2mortal (newRV_noinc ((SV *)av))); |
3358 | XPUSHs (sv_2mortal (newRV_noinc ((SV *)av))); |
… | |
… | |
3370 | int count; |
3371 | int count; |
3371 | |
3372 | |
3372 | eval_pv ("require 'Coro/jit-" CORO_JIT_TYPE ".pl'", 1); |
3373 | eval_pv ("require 'Coro/jit-" CORO_JIT_TYPE ".pl'", 1); |
3373 | |
3374 | |
3374 | PUSHMARK (SP); |
3375 | PUSHMARK (SP); |
3375 | #define VARx(name,expr,type) pushav_3uv (aTHX_ (UV)&(expr), offsetof (perl_slots, name), sizeof (type)); |
3376 | #define VARx(name,expr,type) pushav_4uv (aTHX_ (UV)&(expr), sizeof (expr), offsetof (perl_slots, name), sizeof (type)); |
3376 | # include "state.h" |
3377 | # include "state.h" |
3377 | #undef VARx |
3378 | #undef VARx |
3378 | count = call_pv ("Coro::State::_jit", G_ARRAY); |
3379 | count = call_pv ("Coro::State::_jit", G_ARRAY); |
3379 | SPAGAIN; |
3380 | SPAGAIN; |
3380 | |
3381 | |