… | |
… | |
299 | typedef void (*load_save_perl_slots_type)(perl_slots *); |
299 | typedef void (*load_save_perl_slots_type)(perl_slots *); |
300 | #elif __i386 && (__linux || __FreeBSD__ || __OpenBSD__ || __NetBSD__ || __solaris) |
300 | #elif __i386 && (__linux || __FreeBSD__ || __OpenBSD__ || __NetBSD__ || __solaris) |
301 | #define CORO_JIT_TYPE "x86-unix" |
301 | #define CORO_JIT_TYPE "x86-unix" |
302 | typedef void (*load_save_perl_slots_type)(perl_slots *); |
302 | typedef void (*load_save_perl_slots_type)(perl_slots *); |
303 | #else |
303 | #else |
|
|
304 | x x x x |
304 | #undef CORO_JIT |
305 | #undef CORO_JIT |
305 | #endif |
306 | #endif |
306 | #endif |
307 | #endif |
307 | #endif |
308 | #endif |
308 | |
309 | |
… | |
… | |
3364 | char *map_base; |
3365 | char *map_base; |
3365 | char *load_ptr, *save_ptr; |
3366 | char *load_ptr, *save_ptr; |
3366 | STRLEN load_len, save_len; |
3367 | STRLEN load_len, save_len; |
3367 | int count; |
3368 | int count; |
3368 | |
3369 | |
|
|
3370 | eval_pv ("require 'Coro/jit-" CORO_JIT_TYPE ".pl'", 1); |
|
|
3371 | |
3369 | PUSHMARK (SP); |
3372 | PUSHMARK (SP); |
3370 | PUTBACK; |
|
|
3371 | #define VARx(name,expr,type) pushav_3uv (aTHX_ (UV)&(expr), offsetof (perl_slots, name), sizeof (type)); |
3373 | #define VARx(name,expr,type) pushav_3uv (aTHX_ (UV)&(expr), offsetof (perl_slots, name), sizeof (type)); |
3372 | # include "state.h" |
3374 | # include "state.h" |
3373 | #undef VARx |
3375 | #undef VARx |
3374 | count = call_pv ("Coro::State::_jit", G_ARRAY); |
3376 | count = call_pv ("Coro::State::_jit", G_ARRAY); |
3375 | SPAGAIN; |
3377 | SPAGAIN; |
… | |
… | |
3386 | |
3388 | |
3387 | map_base += (load_len + 15) & ~15; |
3389 | map_base += (load_len + 15) & ~15; |
3388 | |
3390 | |
3389 | save_perl_slots = (load_save_perl_slots_type)map_base; |
3391 | save_perl_slots = (load_save_perl_slots_type)map_base; |
3390 | memcpy (map_base, save_ptr, save_len); |
3392 | memcpy (map_base, save_ptr, save_len); |
|
|
3393 | |
|
|
3394 | PUTBACK; |
|
|
3395 | eval_pv ("undef &Coro::State::_jit", 1); |
3391 | } |
3396 | } |
3392 | |
3397 | |
3393 | #endif |
3398 | #endif |
3394 | |
3399 | |
3395 | MODULE = Coro::State PACKAGE = Coro::State PREFIX = api_ |
3400 | MODULE = Coro::State PACKAGE = Coro::State PREFIX = api_ |
… | |
… | |
3463 | time_init (aTHX); |
3468 | time_init (aTHX); |
3464 | |
3469 | |
3465 | assert (("PRIO_NORMAL must be 0", !CORO_PRIO_NORMAL)); |
3470 | assert (("PRIO_NORMAL must be 0", !CORO_PRIO_NORMAL)); |
3466 | #if CORO_JIT |
3471 | #if CORO_JIT |
3467 | PUTBACK; |
3472 | PUTBACK; |
3468 | eval_pv ("require 'Coro/jit-" CORO_JIT_TYPE ".pl'", 1); |
|
|
3469 | jit_init (aTHX); |
3473 | jit_init (aTHX); |
3470 | perl_eval_pv ("undef &Coro::State::_jit", 1); |
|
|
3471 | SPAGAIN; |
3474 | SPAGAIN; |
3472 | #endif |
3475 | #endif |
3473 | } |
3476 | } |
3474 | |
3477 | |
3475 | SV * |
3478 | SV * |