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.420 by root, Fri Apr 13 10:53:25 2012 UTC vs.
Revision 1.422 by root, Sat Oct 6 21:25:24 2012 UTC

1504 size_t stack_size; 1504 size_t stack_size;
1505 1505
1506#if HAVE_MMAP 1506#if HAVE_MMAP
1507 cctx->ssize = ((cctx_stacksize * sizeof (long) + PAGESIZE - 1) / PAGESIZE + CORO_STACKGUARD) * PAGESIZE; 1507 cctx->ssize = ((cctx_stacksize * sizeof (long) + PAGESIZE - 1) / PAGESIZE + CORO_STACKGUARD) * PAGESIZE;
1508 /* mmap supposedly does allocate-on-write for us */ 1508 /* mmap supposedly does allocate-on-write for us */
1509 cctx->sptr = mmap (0, cctx->ssize, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS, 0, 0); 1509 cctx->sptr = mmap (0, cctx->ssize, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS, -1, 0);
1510 1510
1511 if (cctx->sptr != (void *)-1) 1511 if (cctx->sptr != (void *)-1)
1512 { 1512 {
1513 #if CORO_STACKGUARD 1513 #if CORO_STACKGUARD
1514 mprotect (cctx->sptr, CORO_STACKGUARD * PAGESIZE, PROT_NONE); 1514 mprotect (cctx->sptr, CORO_STACKGUARD * PAGESIZE, PROT_NONE);
3663 RETVAL = boolSV (coro->flags & ix); 3663 RETVAL = boolSV (coro->flags & ix);
3664 OUTPUT: 3664 OUTPUT:
3665 RETVAL 3665 RETVAL
3666 3666
3667void 3667void
3668throw (Coro::State self, SV *exception = &PL_sv_undef) 3668throw (SV *self, SV *exception = &PL_sv_undef)
3669 PROTOTYPE: $;$ 3669 PROTOTYPE: $;$
3670 CODE: 3670 CODE:
3671{ 3671{
3672 struct coro *coro = SvSTATE (self);
3672 struct coro *current = SvSTATE_current; 3673 struct coro *current = SvSTATE_current;
3673 SV **exceptionp = self == current ? &CORO_THROW : &self->except; 3674 SV **exceptionp = coro == current ? &CORO_THROW : &coro->except;
3674 SvREFCNT_dec (*exceptionp); 3675 SvREFCNT_dec (*exceptionp);
3675 SvGETMAGIC (exception); 3676 SvGETMAGIC (exception);
3676 *exceptionp = SvOK (exception) ? newSVsv (exception) : 0; 3677 *exceptionp = SvOK (exception) ? newSVsv (exception) : 0;
3678
3679 api_ready (aTHX_ self);
3677} 3680}
3678 3681
3679void 3682void
3680api_trace (SV *coro, int flags = CC_TRACE | CC_TRACE_SUB) 3683api_trace (SV *coro, int flags = CC_TRACE | CC_TRACE_SUB)
3681 PROTOTYPE: $;$ 3684 PROTOTYPE: $;$

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines