summaryrefslogtreecommitdiff
path: root/cc_runtime.h
diff options
context:
space:
mode:
authorReini Urban <rurban@x-ray.at>2010-01-03 12:09:02 +0000
committerRafael Garcia-Suarez <rgs@consttype.org>2010-01-03 14:52:03 +0100
commit39987fc8b0e8ebad4623529024d583219a7b856c (patch)
treef24464bfdcb1411383ce2844276e5c65730b8f33 /cc_runtime.h
parent2dba5d6056865b047ab6a58cf258c870472b3fe2 (diff)
downloadperl-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.h20
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