Lines Matching defs:cx
48 const PERL_CONTEXT *cx;
52 if (!(cx = caller_cx(1,NULL))) {
63 cx = &cxstack[cxix];
66 switch (cx->blk_gimme) {
216 PERL_CONTEXT *cx = CX_CUR();
218 SV * const dstr = cx->sb_dstr;
219 char *s = cx->sb_s;
220 char *m = cx->sb_m;
221 char *orig = cx->sb_orig;
222 REGEXP * const rx = cx->sb_rx;
234 rxres_restore(&cx->sb_rxres, rx);
236 if (cx->sb_iters++) {
238 const SSize_t saviters = cx->sb_iters;
239 if (cx->sb_iters > cx->sb_maxiters)
248 cx->sb_rxtainted |= SUBST_TAINT_REPL;
249 if (CxONCE(cx) || s < orig ||
250 !CALLREGEXEC(rx, s, cx->sb_strend, orig,
251 (s == m), cx->sb_targ, NULL,
255 SV *targ = cx->sb_targ;
258 assert(cx->sb_strend >= s);
259 if(cx->sb_strend > s) {
261 sv_catpvn_nomg_utf8_upgrade(dstr, s, cx->sb_strend - s, nsv);
263 sv_catpvn_nomg(dstr, s, cx->sb_strend - s);
266 cx->sb_rxtainted |= SUBST_TAINT_PAT;
305 if ((cx->sb_rxtainted & SUBST_TAINT_PAT) ||
306 ((cx->sb_rxtainted & (SUBST_TAINT_STR|SUBST_TAINT_RETAINT))
311 if (!(cx->sb_rxtainted & SUBST_TAINT_BOOLRET)
312 && (cx->sb_rxtainted & (SUBST_TAINT_STR|SUBST_TAINT_PAT))
317 cBOOL(cx->sb_rxtainted &
344 CX_LEAVE_SCOPE(cx);
345 CX_POPSUBST(cx);
346 CX_POP(cx);
352 cx->sb_iters = saviters;
362 cx->sb_orig = orig = RX_SUBBEG(rx);
364 cx->sb_strend = s + (cx->sb_strend - m);
366 cx->sb_m = m = RX_OFFS_START(rx,0) + orig;
368 if (DO_UTF8(dstr) && !SvUTF8(cx->sb_targ))
373 cx->sb_s = RX_OFFS_END(rx,0) + orig;
376 = (pm->op_pmflags & PMf_NONDESTRUCT) ? cx->sb_dstr : cx->sb_targ;
397 cx->sb_rxtainted |= SUBST_TAINT_PAT;
399 if ((cx->sb_rxtainted & SUBST_TAINT_PAT) ||
400 ((cx->sb_rxtainted & (SUBST_TAINT_STR|SUBST_TAINT_RETAINT))
405 if (cx->sb_iters > 1 && (cx->sb_rxtainted &
408 ? cx->sb_dstr : cx->sb_targ);
411 rxres_save(&cx->sb_rxres, rx);
1506 const PERL_CONTEXT * const cx = &cxstack[i];
1507 switch (CxTYPE(cx)) {
1509 if(CxTRY(cx))
1518 context_name[CxTYPE(cx)], OP_NAME(PL_op));
1519 if (CxTYPE(cx) == CXt_NULL) /* sort BLOCK */
1530 const char *cx_label = CxLABEL_len_flags(cx, &cx_label_len, &cx_label_flags);
1542 DEBUG_l(Perl_deb(aTHX_ "(poptolabel(): skipping label at cx=%ld %s)\n",
1546 DEBUG_l( Perl_deb(aTHX_ "(poptolabel(): found label at cx=%ld %s)\n", (long)i, label));
1631 const PERL_CONTEXT * const cx = &cxstk[i];
1632 switch (CxTYPE(cx)) {
1640 if (cx->cx_type & CXp_SUB_RE_FAKE)
1642 DEBUG_l( Perl_deb(aTHX_ "(dopoptosub_at(): found sub at cx=%ld)\n", (long)i));
1646 if (CxTRY(cx))
1648 DEBUG_l( Perl_deb(aTHX_ "(dopoptosub_at(): found sub at cx=%ld)\n", (long)i));
1652 DEBUG_l( Perl_deb(aTHX_ "(dopoptosub_at(): found sub at cx=%ld)\n", (long)i));
1664 const PERL_CONTEXT *cx = &cxstack[i];
1665 switch (CxTYPE(cx)) {
1669 DEBUG_l( Perl_deb(aTHX_ "(dopoptoeval(): found eval at cx=%ld)\n", (long)i));
1681 const PERL_CONTEXT * const cx = &cxstack[i];
1682 switch (CxTYPE(cx)) {
1684 if(CxTRY(cx))
1693 context_name[CxTYPE(cx)], OP_NAME(PL_op));
1694 if ((CxTYPE(cx)) == CXt_NULL) /* sort BLOCK */
1702 DEBUG_l( Perl_deb(aTHX_ "(dopoptoloop(): found loop at cx=%ld)\n", (long)i));
1716 const PERL_CONTEXT *cx = &cxstack[i];
1717 switch (CxTYPE(cx)) {
1721 DEBUG_l( Perl_deb(aTHX_ "(dopoptogivenfor(): found given at cx=%ld)\n", (long)i));
1724 assert(!(cx->cx_type & CXp_FOR_DEF));
1730 if (cx->cx_type & CXp_FOR_DEF) {
1731 DEBUG_l( Perl_deb(aTHX_ "(dopoptogivenfor(): found foreach at cx=%ld)\n", (long)i));
1744 const PERL_CONTEXT *cx = &cxstack[i];
1745 switch (CxTYPE(cx)) {
1749 DEBUG_l( Perl_deb(aTHX_ "(dopoptowhen(): found when at cx=%ld)\n", (long)i));
1770 PERL_CONTEXT *cx = CX_CUR();
1772 CX_DEBUG(cx, "UNWIND");
1775 CX_LEAVE_SCOPE(cx);
1777 switch (CxTYPE(cx)) {
1779 CX_POPSUBST(cx);
1781 * cx_popblock(cx) below */
1788 cx_popsub(cx);
1791 cx_popeval(cx);
1798 cx_poploop(cx);
1801 cx_popwhen(cx);
1804 cx_popgiven(cx);
1812 cx_popformat(cx);
1816 cx_popblock(cx);
1915 S_pop_eval_context_maybe_croak(pTHX_ PERL_CONTEXT *cx, SV *errsv, int action)
1920 CX_LEAVE_SCOPE(cx);
1921 do_croak = action && (CxOLD_OP_TYPE(cx) == OP_REQUIRE);
1924 namesv = cx->blk_eval.old_namesv;
1925 cx->blk_eval.old_namesv = NULL;
1928 cx_popeval(cx);
1929 cx_popblock(cx);
1930 CX_POP(cx);
2034 PERL_CONTEXT *cx;
2042 cx = CX_CUR();
2043 assert(CxTYPE(cx) == CXt_EVAL);
2045 rpp_obliterate_stack_to(cx->blk_oldsp);
2048 gimme = cx->blk_gimme;
2052 restartjmpenv = cx->blk_eval.cur_top_env;
2053 restartop = cx->blk_eval.retop;
2078 S_pop_eval_context_maybe_croak(aTHX_ cx, exceptsv, 2);
2134 const PERL_CONTEXT *cx;
2156 cx = &ccstack[cxix];
2157 if (dbcxp) *dbcxp = cx;
2159 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) {
2162 field below is defined for any cx. */
2165 cx = &ccstack[dbcxix];
2168 return cx;
2174 const PERL_CONTEXT *cx;
2188 cx = caller_cx(count + cBOOL(PL_op->op_private & OPpOFFBYONE), &dbcx);
2189 if (!cx) {
2198 if (CxTYPE(cx) == CXt_SUB && CxHASARGS(cx)
2203 PadlistARRAY(CvPADLIST(cx->blk_sub.cv))[
2204 cx->blk_sub.olddepth+1]))[0]);
2233 CX_DEBUG(cx, "CALLER");
2234 assert(CopSTASH(cx->blk_oldcop));
2235 stash_hek = SvTYPE(CopSTASH(cx->blk_oldcop)) == SVt_PVHV
2236 ? HvNAME_HEK((HV*)CopSTASH(cx->blk_oldcop))
2259 mPUSHs(newSVpv(OutCopFILE(cx->blk_oldcop), 0));
2260 lcop = closest_cop(cx->blk_oldcop, OpSIBLING(cx->blk_oldcop),
2261 cx->blk_sub.retop, TRUE);
2263 lcop = cx->blk_oldcop;
2267 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) {
2271 PUSHs(boolSV(CxHASARGS(cx)));
2275 PUSHs(boolSV(CxHASARGS(cx)));
2282 gimme = cx->blk_gimme;
2287 if (CxTYPE(cx) == CXt_EVAL) {
2289 if (CxOLD_OP_TYPE(cx) == OP_ENTEREVAL) {
2290 SV *cur_text = cx->blk_eval.cur_text;
2303 else if (cx->blk_eval.old_namesv) {
2304 mPUSHs(newSVsv(cx->blk_eval.old_namesv));
2318 mPUSHi(CopHINTS_get(cx->blk_oldcop));
2321 char *old_warnings = cx->blk_oldcop->cop_warnings;
2336 PUSHs(cx->blk_oldcop->cop_hints_hash ?
2337 sv_2mortal(newRV_noinc(MUTABLE_SV(cop_hints_2hv(cx->blk_oldcop, 0))))
2373 PERL_CONTEXT *cx;
2422 cx = cx_pushblock(CXt_SUB, gimme, PL_stack_sp, PL_savestack_ix);
2423 cx_pushsub(cx, cv, PL_op->op_next, 0);
2427 cx->blk_u16 = 0;
2458 PERL_CONTEXT *cx;
2462 cx = CX_CUR();
2463 assert(CxTYPE(cx) == CXt_BLOCK);
2467 cx->blk_oldpm = PL_curpm;
2469 oldsp = PL_stack_base + cx->blk_oldsp;
2470 gimme = cx->blk_gimme;
2478 CX_LEAVE_SCOPE(cx);
2479 cx_popblock(cx);
2480 CX_POP(cx);
2510 PERL_CONTEXT *cx;
2558 cx = cx_pushblock(cxflags, gimme, MARK, PL_savestack_ix);
2559 cx_pushloop_for(cx, itervarp, itersave);
2575 cx->cx_type |= CXt_LOOP_LAZYIV;
2579 cx->blk_loop.state_u.lazyiv.cur = SvIV_nomg(sv);
2580 cx->blk_loop.state_u.lazyiv.end = SvIV_nomg(right);
2584 cx->cx_type |= CXt_LOOP_LAZYSV;
2585 cx->blk_loop.state_u.lazysv.cur = newSVsv(sv);
2586 cx->blk_loop.state_u.lazysv.end = right;
2593 (void) SvPV_force_nolen(cx->blk_loop.state_u.lazysv.cur);
2601 cx->blk_loop.state_u.lazysv.end = &PL_sv_no;
2607 cx->cx_type |= CXt_LOOP_ARY;
2608 cx->blk_loop.state_u.ary.ary = MUTABLE_AV(maybe_ary);
2612 cx->blk_loop.state_u.ary.ix =
2614 AvFILL(cx->blk_loop.state_u.ary.ary) + 1 :
2621 cx->cx_type |= CXt_LOOP_LIST;
2622 cx->blk_oldsp = PL_stack_sp - PL_stack_base;
2623 cx->blk_loop.state_u.stack.basesp = MARK - PL_stack_base;
2624 cx->blk_loop.state_u.stack.ix =
2626 ? cx->blk_oldsp + 1
2627 : cx->blk_loop.state_u.stack.basesp;
2638 PERL_CONTEXT *cx;
2641 cx = cx_pushblock(CXt_LOOP_PLAIN, gimme, PL_stack_sp, PL_savestack_ix);
2642 cx_pushloop_plain(cx);
2649 PERL_CONTEXT *cx;
2654 cx = CX_CUR();
2655 assert(CxTYPE_is_LOOP(cx));
2656 oldsp = PL_stack_base + cx->blk_oldsp;
2657 base = CxTYPE(cx) == CXt_LOOP_LIST
2658 ? PL_stack_base + cx->blk_loop.state_u.stack.basesp
2660 gimme = cx->blk_gimme;
2668 CX_LEAVE_SCOPE(cx);
2669 cx_poploop(cx); /* Stack values are safe: release loop vars ... */
2670 cx_popblock(cx);
2671 CX_POP(cx);
2690 PERL_CONTEXT *cx;
2694 cx = CX_CUR();
2695 assert(CxTYPE(cx) == CXt_SUB);
2697 if (CxMULTICALL(cx)) {
2704 gimme = cx->blk_gimme;
2705 oldsp = PL_stack_base + cx->blk_oldsp; /* last arg of previous frame */
2710 U8 lval = CxLVAL(cx);
2742 SV *sv = vivify_ref(*PL_stack_sp, CxLVAL(cx) & OPpDEREF);
2776 CX_LEAVE_SCOPE(cx);
2777 cx_popsub(cx); /* Stack values are safe: release CV and @_ ... */
2778 cx_popblock(cx);
2779 retop = cx->blk_sub.retop;
2780 CX_POP(cx);
2785 static const char *S_defer_blockname(PERL_CONTEXT *cx)
2787 return (cx->cx_type & CXp_FINALLY) ? "finally" : "defer";
2794 PERL_CONTEXT *cx;
2856 cx = &cxstack[cxix];
2857 if (cx->blk_gimme != G_VOID)
2858 leave_adjust_stacks(MARK, PL_stack_base + cx->blk_oldsp,
2859 cx->blk_gimme,
2860 CxTYPE(cx) == CXt_SUB && CvLVALUE(cx->blk_sub.cv)
2863 cx = &cxstack[cxix]; /* CX stack may have been realloced */
2879 cx = &cxstack[cxix];
2880 oldsp = PL_stack_base + cx->blk_oldsp;
2884 if (cx->blk_gimme == G_LIST) {
2906 switch (CxTYPE(cx)) {
2908 return CxEVALBLOCK(cx)
2912 return CvLVALUE(cx->blk_sub.cv)
2918 DIE(aTHX_ "panic: return, type=%u", (unsigned) CxTYPE(cx));
2986 PERL_CONTEXT *cx;
2989 cx = S_unwind_loop(aTHX);
2991 assert(CxTYPE_is_LOOP(cx));
2993 + (CxTYPE(cx) == CXt_LOOP_LIST
2994 ? cx->blk_loop.state_u.stack.basesp
2995 : cx->blk_oldsp
3001 CX_LEAVE_SCOPE(cx);
3002 cx_poploop(cx); /* release loop vars ... */
3003 cx_popblock(cx);
3004 nextop = cx->blk_loop.my_op->op_lastop->op_next;
3005 CX_POP(cx);
3012 PERL_CONTEXT *cx;
3015 cx = CX_CUR();
3016 if (!((PL_op->op_flags & OPf_SPECIAL) && CxTYPE_is_LOOP(cx)))
3017 cx = S_unwind_loop(aTHX);
3019 cx_topblock(cx);
3020 PL_curcop = cx->blk_oldcop;
3022 return (cx)->blk_loop.my_op->op_nextop;
3027 PERL_CONTEXT *cx = S_unwind_loop(aTHX);
3028 OP* redo_op = cx->blk_loop.my_op->op_redoop;
3033 cx = CX_CUR();
3034 assert(CxTYPE(cx) == CXt_BLOCK);
3039 CX_LEAVE_SCOPE(cx);
3040 cx_topblock(cx);
3041 PL_curcop = cx->blk_oldcop;
3167 PERL_CONTEXT *cx;
3184 PERL_CONTEXT *cx;
3213 cx = &cxstack[cxix];
3215 if (CxTYPE(cx) == CXt_EVAL) {
3216 if (CxREALEVAL(cx))
3223 else if (CxMULTICALL(cx))
3243 cx = CX_CUR();
3244 cx_topblock(cx);
3250 assert(PL_scopestack_ix == cx->blk_oldscopesp);
3251 CX_LEAVE_SCOPE(cx);
3253 if (CxTYPE(cx) == CXt_SUB && CxHASARGS(cx)) {
3257 PadlistARRAY(CvPADLIST(cx->blk_sub.cv))[
3258 CvDEPTH(cx->blk_sub.cv)])) == PL_curpad);
3296 if (CxTYPE(cx) == CXt_SUB) {
3297 CvDEPTH(cx->blk_sub.cv) = cx->blk_sub.olddepth;
3302 old_cv = cx->blk_sub.cv;
3304 SvREFCNT_dec_NN(cx->blk_sub.cv);
3356 if (CxTYPE(cx) == CXt_SUB && CxHASARGS(cx)) {
3358 CX_POP_SAVEARRAY(cx);
3361 retop = cx->blk_sub.retop;
3362 PL_comppad = cx->blk_sub.prevcomppad;
3375 | (cx->blk_gimme & G_WANT);
3381 PL_curcop = cx->blk_oldcop;
3383 PL_curstackinfo->si_cxsubix = cx->blk_sub.old_cxsubix;
3385 CX_POP(cx);
3400 cx->blk_sub.cv = cv;
3401 cx->blk_sub.olddepth = CvDEPTH(cv);
3410 PL_curcop = cx->blk_oldcop;
3413 if (CxHASARGS(cx))
3482 cx = &cxstack[ix];
3483 switch (CxTYPE(cx)) {
3486 if (!CxEVALBLOCK(cx)) {
3490 last_eval_cx = cx;
3501 gotoprobe = OpSIBLING(cx->blk_oldcop);
3507 gotoprobe = OpSIBLING(cx->blk_oldcop);
3513 gotoprobe = CvROOT(cx->blk_sub.cv);
3514 pseudo_block = cBOOL(CxMULTICALL(cx));
3521 DIE(aTHX_ "Can't \"%s\" out of a \"%s\" block", "goto", S_defer_blockname(cx));
3525 CxTYPE(cx), (long) ix);
3582 cx = CX_CUR();
3583 cx_topblock(cx);
3820 const PERL_CONTEXT *cx = &(si->si_cxstack[ix]);
3822 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT) {
3823 cv = cx->blk_sub.cv;
3826 *db_seqp = cx->blk_oldcop->cop_seq;
3829 if (cx->cx_type & CXp_SUB_RE)
3832 else if (CxTYPE(cx) == CXt_EVAL && !CxEVALBLOCK(cx))
3833 cv = cx->blk_eval.cv;
4133 PERL_CONTEXT *cx;
4151 cx = CX_CUR();
4152 assert(CxTYPE(cx) == CXt_EVAL);
4158 S_pop_eval_context_maybe_croak(aTHX_ cx, ERRSV, 2);
4451 PERL_CONTEXT *cx;
5227 cx = cx_pushblock(CXt_EVAL, gimme, PL_stack_sp, old_savestack_ix);
5228 cx_pusheval(cx, PL_op->op_next, newSVpv(name, 0));
5284 PERL_CONTEXT *cx;
5388 cx = cx_pushblock((CXt_EVAL|CXp_REAL),
5390 cx_pusheval(cx, PL_op->op_next, NULL);
5441 PERL_CONTEXT *cx;
5450 cx = CX_CUR();
5451 assert(CxTYPE(cx) == CXt_EVAL);
5453 oldsp = PL_stack_base + cx->blk_oldsp;
5454 gimme = cx->blk_gimme;
5456 bool is_require= CxOLD_OP_TYPE(cx) == OP_REQUIRE;
5525 PL_curcop = cx->blk_oldcop;
5529 retop = cx->blk_eval.retop;
5530 evalcv = cx->blk_eval.cv;
5547 S_pop_eval_context_maybe_croak(aTHX_ cx, NULL, failed);
5564 PERL_CONTEXT *cx;
5584 cx = cx_pushblock((CXt_EVAL|CXp_EVALBLOCK|CXp_TRY), gimme,
5586 cx_pushtry(cx, cLOGOP->op_other);
5621 PERL_CONTEXT *cx;
5623 cx = CX_CUR();
5624 CX_LEAVE_SCOPE(cx);
5625 cx_popeval(cx);
5626 cx_popblock(cx);
5627 CX_POP(cx);
5635 PERL_CONTEXT *cx;
5640 cx = cx_pushblock((CXt_EVAL|CXp_EVALBLOCK), gimme,
5642 cx_pusheval(cx, retop, NULL);
5682 PERL_CONTEXT *cx;
5687 cx = CX_CUR();
5688 assert(CxTYPE(cx) == CXt_EVAL);
5689 oldsp = PL_stack_base + cx->blk_oldsp;
5690 gimme = cx->blk_gimme;
5699 CX_LEAVE_SCOPE(cx);
5700 cx_popeval(cx);
5701 cx_popblock(cx);
5702 retop = CxTRY(cx) ? PL_op->op_next : cx->blk_eval.retop;
5703 CX_POP(cx);
5711 PERL_CONTEXT *cx;
5718 cx = cx_pushblock(CXt_GIVEN, gimme, PL_stack_sp, PL_savestack_ix);
5719 cx_pushgiven(cx, origsv);
5726 PERL_CONTEXT *cx;
5731 cx = CX_CUR();
5732 assert(CxTYPE(cx) == CXt_GIVEN);
5733 oldsp = PL_stack_base + cx->blk_oldsp;
5734 gimme = cx->blk_gimme;
5741 CX_LEAVE_SCOPE(cx);
5742 cx_popgiven(cx);
5743 cx_popblock(cx);
5744 CX_POP(cx);
6265 PERL_CONTEXT *cx;
6283 cx = cx_pushblock(CXt_WHEN, gimme, PL_stack_sp, PL_savestack_ix);
6284 cx_pushwhen(cx);
6292 PERL_CONTEXT *cx;
6296 cx = CX_CUR();
6297 assert(CxTYPE(cx) == CXt_WHEN);
6298 gimme = cx->blk_gimme;
6306 oldsp = PL_stack_base + cx->blk_oldsp;
6316 cx = &cxstack[cxix];
6318 if (CxFOREACH(cx)) {
6321 cx = CX_CUR();
6322 cx_topblock(cx);
6323 PL_curcop = cx->blk_oldcop;
6324 return cx->blk_loop.my_op->op_nextop;
6328 assert(cx->blk_givwhen.leave_op->op_type == OP_LEAVEGIVEN);
6329 return cx->blk_givwhen.leave_op;
6336 PERL_CONTEXT *cx;
6346 cx = CX_CUR();
6347 assert(CxTYPE(cx) == CXt_WHEN);
6348 rpp_popfree_to_NN(PL_stack_base + cx->blk_oldsp);
6349 CX_LEAVE_SCOPE(cx);
6350 cx_popwhen(cx);
6351 cx_popblock(cx);
6352 nextop = cx->blk_givwhen.leave_op->op_next;
6353 CX_POP(cx);
6361 PERL_CONTEXT *cx;
6367 cx = &cxstack[cxix];
6368 if (CxFOREACH(cx))
6375 cx = CX_CUR();
6376 rpp_popfree_to_NN(PL_stack_base + cx->blk_oldsp);
6378 return cx->blk_givwhen.leave_op;
6402 PERL_CONTEXT *cx;
6404 cx = CX_CUR();
6405 assert(CxTYPE(cx) == CXt_DEFER);
6412 rpp_popfree_to_NN(PL_stack_base + cx->blk_oldsp);
6415 PL_stack_sp = PL_stack_base + cx->blk_oldsp;
6418 CX_LEAVE_SCOPE(cx);
6419 cx_popblock(cx);
6420 CX_POP(cx);