* Note that the refcnt of the cv is incremented twice; The CX one is
* decremented by LEAVESUB, the other by LEAVE. */
-#define CX_SUB_HASARGS_SET(cx, v) ((cx)->blk_sub.hasargs = (v))
-#define CX_SUB_HASARGS_GET(cx) ((cx)->blk_sub.hasargs + 0)
-
#define PUSHSUB_BASE(cx) \
cx->blk_sub.cv = cv; \
cx->blk_sub.olddepth = CvDEPTH(cv); \
- CX_SUB_HASARGS_SET(cx, hasargs); \
+ cx->blk_sub.hasargs = hasargs; \
cx->blk_sub.retop = NULL; \
if (!CvDEPTH(cv)) { \
SvREFCNT_inc_simple_void_NN(cv); \
cx->blk_sub.cv = cv; \
cx->blk_sub.gv = gv; \
cx->blk_sub.retop = NULL; \
- CX_SUB_HASARGS_SET(cx, 0); \
+ cx->blk_sub.hasargs = 0; \
cx->blk_sub.dfoutgv = PL_defoutgv; \
SvREFCNT_inc_void(cx->blk_sub.dfoutgv)
#define POPSUB(cx,sv) \
STMT_START { \
- if (CX_SUB_HASARGS_GET(cx)) { \
+ if (cx->blk_sub.hasargs) { \
POP_SAVEARRAY(); \
/* abandon @_ if it got reified */ \
if (AvREAL(cx->blk_sub.argarray)) { \
/* eval context */
struct block_eval {
- I32 old_in_eval;
- I32 old_op_type;
+ U8 old_in_eval;
+ U16 old_op_type;
SV * old_namesv;
OP * old_eval_root;
SV * cur_text;