X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=cc_runtime.h;h=bb0e07a58cdf5d43bdda4ed1701d01122b1f71ea;hb=097ee67dff1c60f201bc09435bc6eaeeafcd8123;hp=18e3ba2c083de933effcc95ac1d8bf54c208f098;hpb=6b88bc9c1f6d4b32c70e7ef68f8c65266e431623;p=p5sagit%2Fp5-mst-13.2.git diff --git a/cc_runtime.h b/cc_runtime.h index 18e3ba2..bb0e07a 100644 --- a/cc_runtime.h +++ b/cc_runtime.h @@ -1,4 +1,4 @@ -#define DOOP(ppname) PUTBACK; PL_op = ppname(ARGS); SPAGAIN +#define DOOP(ppname) PUTBACK; PL_op = ppname(aTHX); SPAGAIN #define PP_LIST(g) do { \ dMARK; \ @@ -43,9 +43,9 @@ JMPENV_PUSH(ret); \ switch (ret) { \ case 0: \ - PL_op = ppaddr(ARGS); \ + PL_op = ppaddr(aTHX); \ PL_retstack[PL_retstack_ix - 1] = Nullop; \ - if (PL_op != nxt) runops(); \ + if (PL_op != nxt) CALLRUNOPS(); \ JMPENV_POP; \ break; \ case 1: JMPENV_POP; JMPENV_JUMP(1); \ @@ -59,13 +59,16 @@ SPAGAIN; \ } while (0) -#define PP_ENTERTRY(jmpbuf,label) do { \ - dJMPENV; \ - int ret; \ - JMPENV_PUSH(ret); \ - switch (ret) { \ - case 1: JMPENV_POP; JMPENV_JUMP(1); \ - case 2: JMPENV_POP; JMPENV_JUMP(2); \ - case 3: JMPENV_POP; SPAGAIN; goto label;\ - } \ - } while (0) + +#define PP_ENTERTRY(jmpbuf,label) \ + STMT_START { \ + int ret; \ + JMPENV_PUSH_ENV(jmpbuf,ret); \ + switch (ret) { \ + case 1: JMPENV_POP_ENV(jmpbuf); JMPENV_JUMP(1);\ + case 2: JMPENV_POP_ENV(jmpbuf); JMPENV_JUMP(2);\ + case 3: JMPENV_POP_ENV(jmpbuf); SPAGAIN; goto label;\ + } \ + } STMT_END +#define PP_LEAVETRY \ + STMT_START{ PL_top_env=PL_top_env->je_prev; }STMT_END