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.408 by root, Sat Jun 11 16:58:40 2011 UTC vs.
Revision 1.409 by root, Sun Jun 12 04:29:15 2011 UTC

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
3395MODULE = Coro::State PACKAGE = Coro::State PREFIX = api_ 3400MODULE = 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
3475SV * 3478SV *

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines