diff options
author | Reini Urban <rurban@x-ray.at> | 2010-01-03 12:09:02 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgs@consttype.org> | 2010-01-03 14:52:03 +0100 |
commit | 39987fc8b0e8ebad4623529024d583219a7b856c (patch) | |
tree | f24464bfdcb1411383ce2844276e5c65730b8f33 /cc_runtime.h | |
parent | 2dba5d6056865b047ab6a58cf258c870472b3fe2 (diff) | |
download | perl-39987fc8b0e8ebad4623529024d583219a7b856c.tar.gz |
CC compiler updates for >=5.10
PP_EVAL: nullify the string loop, analog to the old retstack.
pp_leaveeval sets: retop = cx->blk_eval.retop
PP_ENTERTRY: See PERL_FLEXIBLE_EXCEPTIONS in cop.h
Diffstat (limited to 'cc_runtime.h')
-rw-r--r-- | cc_runtime.h | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/cc_runtime.h b/cc_runtime.h index b384fd2703..90826dfb0e 100644 --- a/cc_runtime.h +++ b/cc_runtime.h @@ -54,6 +54,7 @@ switch (ret) { \ case 0: \ PL_op = ppaddr(aTHX); \ + cxstack[cxstack_ix].blk_eval.retop = Nullop; \ if (PL_op != nxt) CALLRUNOPS(aTHX); \ JMPENV_POP; \ break; \ @@ -68,16 +69,17 @@ SPAGAIN; \ } while (0) - -#define PP_ENTERTRY(jmpbuf,label) \ +#define PP_ENTERTRY(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;\ - } \ + 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;\ + } \ } STMT_END + #define PP_LEAVETRY \ STMT_START{ PL_top_env=PL_top_env->je_prev; }STMT_END |