}
if (o->op_flags & OPf_KIDS) {
OP *kid;
- for (kid = cUNOPo->op_first; kid; kid = OP_SIBLING(kid))
+ for (kid = cUNOPo->op_first; kid; kid = OpSIBLING(kid))
do_op_dump(level, file, kid);
}
Perl_dump_indent(aTHX_ level-1, file, "}\n");
{RXf_PMf_EXTENDED, "PMf_EXTENDED,"},
{RXf_PMf_EXTENDED_MORE, "PMf_EXTENDED_MORE,"},
{RXf_PMf_KEEPCOPY, "PMf_KEEPCOPY,"},
+ {RXf_PMf_NOCAPTURE, "PMf_NOCAPURE,"},
{RXf_IS_ANCHORED, "IS_ANCHORED,"},
{RXf_NO_INPLACE_SUBST, "NO_INPLACE_SUBST,"},
{RXf_EVAL_SEEN, "EVAL_SEEN,"},
/* append to the out SV, the name of the lexical at offset off in the CV
* cv */
-void
+static void
S_append_padvar(pTHX_ PADOFFSET off, CV *cv, SV *out, int n,
bool paren, bool is_scalar)
{
if (namepad && (sv = padnamelist_fetch(namepad, off + i)))
{
STRLEN cur = SvCUR(out);
- Perl_sv_catpvf(aTHX_ out, "[%"PNf, PNfARG(sv));
+ Perl_sv_catpvf(aTHX_ out, "[%"UTF8f,
+ UTF8fARG(1, PadnameLEN(sv) - 1,
+ PadnamePV(sv) + 1));
if (is_scalar)
SvPVX(out)[cur] = '$';
}
}
-void
-S_print_gv_name(pTHX_ GV *gv, SV *out, char sigil)
+static void
+S_append_gv_name(pTHX_ GV *gv, SV *out)
{
SV *sv;
if (!gv) {
}
sv = newSV(0);
gv_fullname4(sv, gv, NULL, FALSE);
- Perl_sv_catpvf(aTHX_ out, "%c%-p", sigil, sv);
+ Perl_sv_catpvf(aTHX_ out, "%c%-p", '$', sv);
SvREFCNT_dec_NN(sv);
}
/* return a temporary SV containing a stringified representation of
- * the op_aux field of a UNOP_AUX op, associated with CV cv
+ * the op_aux field of a MULTIDEREF op, associated with CV cv
*/
SV*
-Perl_unop_aux_stringify(pTHX_ const OP *o, CV *cv)
+Perl_multideref_stringify(pTHX_ const OP *o, CV *cv)
{
UNOP_AUX_item *items = cUNOP_AUXo->op_aux;
UV actions = items->uv;
bool last = 0;
bool is_hash = FALSE;
int derefs = 0;
- SV *out = sv_2mortal(newSVpv("",0));
+ SV *out = newSVpvn_flags("",0,SVs_TEMP);
#ifdef USE_ITHREADS
PADLIST * const padlist = CvPADLIST(cv);
- PAD *comppad = comppad = PadlistARRAY(padlist)[1];
+ PAD *comppad = PadlistARRAY(padlist)[1];
#endif
- PERL_ARGS_ASSERT_UNOP_AUX_STRINGIFY;
+ PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY;
while (!last) {
switch (actions & MDEREF_ACTION_MASK) {
case MDEREF_AV_gvav_aelem:
derefs = 1;
sv = ITEM_SV(++items);
- S_print_gv_name(aTHX_ (GV*)sv, out, '$');
+ S_append_gv_name(aTHX_ (GV*)sv, out);
goto do_elem;
case MDEREF_HV_gvsv_vivify_rv2hv_helem:
is_hash = TRUE;
case MDEREF_AV_gvsv_vivify_rv2av_aelem:
sv = ITEM_SV(++items);
- S_print_gv_name(aTHX_ (GV*)sv, out, '$');
+ S_append_gv_name(aTHX_ (GV*)sv, out);
goto do_vivify_rv2xv_elem;
case MDEREF_HV_padsv_vivify_rv2hv_helem:
break;
case MDEREF_INDEX_gvsv:
sv = ITEM_SV(++items);
- S_print_gv_name(aTHX_ (GV*)sv, out, '$');
+ S_append_gv_name(aTHX_ (GV*)sv, out);
break;
}
sv_catpvn_nomg(out, (is_hash ? "}" : "]"), 1);
case OP_MULTIDEREF:
PerlIO_printf(Perl_debug_log, "(%-p)",
- unop_aux_stringify(o, deb_curcv(cxstack_ix)));
+ multideref_stringify(o, deb_curcv(cxstack_ix)));
break;
default: