1 #define DOOP(ppname) PUTBACK; op = ppname(); SPAGAIN
3 #define PP_LIST(g) do { \
14 #define MAYBE_TAINT_SASSIGN_SRC(sv) \
15 if (tainting && tainted && (!SvGMAGICAL(left) || !SvSMAGICAL(left) || \
16 !((mg=mg_find(left, 't')) && mg->mg_len & 1)))\
19 #define PP_PREINC(sv) do { \
22 SvFLAGS(sv) &= ~(SVf_NOK|SVf_POK|SVp_NOK|SVp_POK); \
29 #define PP_UNSTACK do { \
31 stack_sp = stack_base + cxstack[cxstack_ix].blk_oldsp; \
33 oldsave = scopestack[scopestack_ix - 1]; \
34 LEAVE_SCOPE(oldsave); \
41 #define RUN() runops()
45 /* Anyone using eval "" deserves this mess */
46 #define PP_EVAL(ppaddr, nxt) do { \
54 retstack[retstack_ix - 1] = Nullop; \
55 if (op != nxt) RUN(); \
58 case 1: JMPENV_POP; JMPENV_JUMP(1); \
59 case 2: JMPENV_POP; JMPENV_JUMP(2); \
62 if (restartop != nxt) \
69 #define PP_ENTERTRY(jmpbuf,label) do { \
74 case 1: JMPENV_POP; JMPENV_JUMP(1); \
75 case 2: JMPENV_POP; JMPENV_JUMP(2); \
76 case 3: JMPENV_POP; SPAGAIN; goto label;\
80 /* Anyone using eval "" deserves this mess */
81 #define PP_EVAL(ppaddr, nxt) do { \
83 Copy(top_env,oldtop,1,Sigjmp_buf); \
85 switch (Sigsetjmp(top_env,1)) { \
88 retstack[retstack_ix - 1] = Nullop; \
89 Copy(oldtop,top_env,1,Sigjmp_buf); \
90 if (op != nxt) RUN(); \
92 case 1: Copy(oldtop,top_env,1,Sigjmp_buf); Siglongjmp(top_env,1); \
93 case 2: Copy(oldtop,top_env,1,Sigjmp_buf); Siglongjmp(top_env,2); \
95 Copy(oldtop,top_env,1,Sigjmp_buf); \
96 if (restartop != nxt) \
97 Siglongjmp(top_env, 3); \
103 #define PP_ENTERTRY(jmpbuf,label) do { \
104 Copy(top_env,jmpbuf,1,Sigjmp_buf); \
105 switch (Sigsetjmp(top_env,1)) { \
106 case 1: Copy(jmpbuf,top_env,1,Sigjmp_buf); Siglongjmp(top_env,1); \
107 case 2: Copy(jmpbuf,top_env,1,Sigjmp_buf); Siglongjmp(top_env,2); \
108 case 3: Copy(jmpbuf,top_env,1,Sigjmp_buf); SPAGAIN; goto label; \