This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add --crash option for Porting/bisect
[perl5.git] / dump.c
diff --git a/dump.c b/dump.c
index afa40cd..24ce93e 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -1382,6 +1382,7 @@ const struct flag_to_name regexp_extflags_names[] = {
     {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,"},
@@ -2269,7 +2270,7 @@ S_deb_padvar(pTHX_ PADOFFSET off, int n, bool paren)
 /* 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)
 {
@@ -2288,7 +2289,9 @@ S_append_padvar(pTHX_ PADOFFSET off, CV *cv, SV *out, int n,
         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] = '$';
         }
@@ -2302,8 +2305,8 @@ S_append_padvar(pTHX_ PADOFFSET off, CV *cv, SV *out, int n,
 }
 
 
-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) {
@@ -2312,7 +2315,7 @@ S_print_gv_name(pTHX_ GV *gv, SV *out, char sigil)
     }
     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);
 }
 
@@ -2324,11 +2327,11 @@ S_print_gv_name(pTHX_ GV *gv, SV *out, char sigil)
 
 
 /* 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;
@@ -2336,13 +2339,13 @@ Perl_unop_aux_stringify(pTHX_ const OP *o, CV *cv)
     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 = PadlistARRAY(padlist)[1];
 #endif
 
-    PERL_ARGS_ASSERT_UNOP_AUX_STRINGIFY;
+    PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY;
 
     while (!last) {
         switch (actions & MDEREF_ACTION_MASK) {
@@ -2363,14 +2366,14 @@ Perl_unop_aux_stringify(pTHX_ const OP *o, CV *cv)
         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:
@@ -2416,7 +2419,7 @@ Perl_unop_aux_stringify(pTHX_ const OP *o, CV *cv)
                 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);
@@ -2495,7 +2498,7 @@ Perl_debop(pTHX_ const OP *o)
 
     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: