__FILE__, __LINE__));
/* Enter a block. */
-#define PUSHBLOCK(cx,t,sp, saveix) \
+#define PUSHBLOCK(cx, t, gimme, sp, saveix) \
CXINC, \
cx = CX_CUR(), \
cx->cx_type = t, \
multicall_oldcatch = CATCH_GET; \
CATCH_SET(TRUE); \
PUSHSTACKi(PERLSI_MULTICALL); \
- PUSHBLOCK(cx, (CXt_SUB|CXp_MULTICALL|flags), PL_stack_sp, \
- PL_savestack_ix); \
+ PUSHBLOCK(cx, (CXt_SUB|CXp_MULTICALL|flags), gimme, \
+ PL_stack_sp, PL_savestack_ix); \
PUSHSUB(cx); \
SAVEOP(); \
saveix_floor = PL_savestack_ix; \
}
else {
U8 hasargs = 0;
- PUSHBLOCK(cx, CXt_SUB, SP, PL_savestack_ix);
+ PUSHBLOCK(cx, CXt_SUB, gimme, SP, PL_savestack_ix);
PUSHSUB_DB(cx);
cx->blk_sub.retop = PL_op->op_next;
PERL_CONTEXT *cx;
I32 gimme = GIMME_V;
- PUSHBLOCK(cx, CXt_BLOCK, SP, PL_savestack_ix);
+ PUSHBLOCK(cx, CXt_BLOCK, gimme, SP, PL_savestack_ix);
PUSHBASICBLK(cx);
RETURN;
/* OPpITER_DEF (implicit $_) should only occur with a GV iter var */
assert((cxflags & CXp_FOR_GV) || !(PL_op->op_private & OPpITER_DEF));
- PUSHBLOCK(cx, cxflags, MARK, PL_savestack_ix);
+ PUSHBLOCK(cx, cxflags, gimme, MARK, PL_savestack_ix);
PUSHLOOP_FOR(cx, itervarp, itersave);
if (PL_op->op_flags & OPf_STACKED) {
PERL_CONTEXT *cx;
const I32 gimme = GIMME_V;
- PUSHBLOCK(cx, CXt_LOOP_PLAIN, SP, PL_savestack_ix);
+ PUSHBLOCK(cx, CXt_LOOP_PLAIN, gimme, SP, PL_savestack_ix);
PUSHLOOP_PLAIN(cx);
RETURN;
}
/* switch to eval mode */
- PUSHBLOCK(cx, CXt_EVAL, SP, old_savestack_ix);
+ PUSHBLOCK(cx, CXt_EVAL, gimme, SP, old_savestack_ix);
PUSHEVAL(cx, name);
cx->blk_eval.retop = PL_op->op_next;
* to do the dirty work for us */
runcv = find_runcv(&seq);
- PUSHBLOCK(cx, (CXt_EVAL|CXp_REAL), SP, old_savestack_ix);
+ PUSHBLOCK(cx, (CXt_EVAL|CXp_REAL), gimme, SP, old_savestack_ix);
PUSHEVAL(cx, 0);
cx->blk_eval.retop = PL_op->op_next;
PERL_CONTEXT *cx;
const I32 gimme = GIMME_V;
- PUSHBLOCK(cx, (CXt_EVAL|CXp_TRYBLOCK), PL_stack_sp, PL_savestack_ix);
+ PUSHBLOCK(cx, (CXt_EVAL|CXp_TRYBLOCK), gimme, PL_stack_sp, PL_savestack_ix);
PUSHEVAL(cx, 0);
PL_in_eval = EVAL_INEVAL;
assert(!PL_op->op_targ); /* used to be set for lexical $_ */
GvSV(PL_defgv) = SvREFCNT_inc(newsv);
- PUSHBLOCK(cx, CXt_GIVEN, SP, PL_savestack_ix);
+ PUSHBLOCK(cx, CXt_GIVEN, gimme, SP, PL_savestack_ix);
PUSHGIVEN(cx, origsv);
RETURN;
if ((0 == (PL_op->op_flags & OPf_SPECIAL)) && !SvTRUEx(POPs))
RETURNOP(cLOGOP->op_other->op_next);
- PUSHBLOCK(cx, CXt_WHEN, SP, PL_savestack_ix);
+ PUSHBLOCK(cx, CXt_WHEN, gimme, SP, PL_savestack_ix);
PUSHWHEN(cx);
RETURN;