[differences between cumulative patch application and perl-5.003_97a]
[p5sagit/p5-mst-13.2.git] / dump.c
diff --git a/dump.c b/dump.c
index 4c00ad3..e74c8c4 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -1,6 +1,6 @@
 /*    dump.c
  *
- *    Copyright (c) 1991-1994, Larry Wall
+ *    Copyright (c) 1991-1997, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -50,7 +50,7 @@ HV* stash;
        for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) {
            GV *gv = (GV*)HeVAL(entry);
            HV *hv;
-           if (GvCV(gv))
+           if (GvCVu(gv))
                dump_sub(gv);
            if (GvFORM(gv))
                dump_form(gv);
@@ -67,7 +67,7 @@ GV* gv;
 {
     SV *sv = sv_newmortal();
 
-    gv_fullname(sv, gv, Nullch);
+    gv_fullname3(sv, gv, Nullch);
     dump("\nSUB %s = ", SvPVX(sv));
     if (CvXSUB(GvCV(gv)))
        dump("(xsub 0x%x %d)\n",
@@ -85,7 +85,7 @@ GV* gv;
 {
     SV *sv = sv_newmortal();
 
-    gv_fullname(sv, gv, Nullch);
+    gv_fullname3(sv, gv, Nullch);
     dump("\nFORMAT %s = ", SvPVX(sv));
     if (CvROOT(GvFORM(gv)))
        dump_op(CvROOT(GvFORM(gv)));
@@ -131,14 +131,20 @@ register OP *op;
 #endif
     if (op->op_flags) {
        *buf = '\0';
-       if (op->op_flags & OPf_KNOW) {
-           if (op->op_flags & OPf_LIST)
-               (void)strcat(buf,"LIST,");
-           else
-               (void)strcat(buf,"SCALAR,");
-       }
-       else
+       switch (op->op_flags & OPf_WANT) {
+       case OPf_WANT_VOID:
+           (void)strcat(buf,"VOID,");
+           break;
+       case OPf_WANT_SCALAR:
+           (void)strcat(buf,"SCALAR,");
+           break;
+       case OPf_WANT_LIST:
+           (void)strcat(buf,"LIST,");
+           break;
+       default:
            (void)strcat(buf,"UNKNOWN,");
+           break;
+       }
        if (op->op_flags & OPf_KIDS)
            (void)strcat(buf,"KIDS,");
        if (op->op_flags & OPf_PARENS)
@@ -185,16 +191,31 @@ register OP *op;
                 op->op_type == OP_AELEM ||
                 op->op_type == OP_HELEM )
        {
-           if (op->op_private & OPpENTERSUB_AMPER)
-               (void)strcat(buf,"AMPER,");
-           if (op->op_private & OPpENTERSUB_DB)
-               (void)strcat(buf,"DB,");
-           if (op->op_private & OPpDEREF_AV)
-               (void)strcat(buf,"AV,");
-           if (op->op_private & OPpDEREF_HV)
-               (void)strcat(buf,"HV,");
-           if (op->op_private & HINT_STRICT_REFS)
-               (void)strcat(buf,"STRICT_REFS,");
+           if (op->op_type == OP_ENTERSUB) {
+               if (op->op_private & OPpENTERSUB_AMPER)
+                   (void)strcat(buf,"AMPER,");
+               if (op->op_private & OPpENTERSUB_DB)
+                   (void)strcat(buf,"DB,");
+           }
+           switch (op->op_private & OPpDEREF) {
+           case OPpDEREF_SV:
+               (void)strcat(buf, "SV,");
+               break;
+           case OPpDEREF_AV:
+               (void)strcat(buf, "AV,");
+               break;
+           case OPpDEREF_HV:
+               (void)strcat(buf, "HV,");
+               break;
+           }
+           if (op->op_type == OP_AELEM || op->op_type == OP_HELEM) {
+               if (op->op_private & OPpLVAL_DEFER)
+                   (void)strcat(buf,"LVAL_DEFER,");
+           }
+           else {
+               if (op->op_private & HINT_STRICT_REFS)
+                   (void)strcat(buf,"STRICT_REFS,");
+           }
        }
        else if (op->op_type == OP_CONST) {
            if (op->op_private & OPpCONST_BARE)
@@ -223,7 +244,7 @@ register OP *op;
            ENTER;
            tmpsv = NEWSV(0,0);
            SAVEFREESV(tmpsv);
-           gv_fullname(tmpsv, cGVOP->op_gv, Nullch);
+           gv_fullname3(tmpsv, cGVOP->op_gv, Nullch);
            dump("GV = %s\n", SvPV(tmpsv, na));
            LEAVE;
        }
@@ -309,10 +330,10 @@ register GV *gv;
     sv = sv_newmortal();
     dumplvl++;
     PerlIO_printf(Perl_debug_log, "{\n");
-    gv_fullname(sv, gv, Nullch);
+    gv_fullname3(sv, gv, Nullch);
     dump("GV_NAME = %s", SvPVX(sv));
     if (gv != GvEGV(gv)) {
-       gv_efullname(sv, GvEGV(gv), Nullch);
+       gv_efullname3(sv, GvEGV(gv), Nullch);
        dump("-> %s", SvPVX(sv));
     }
     dump("\n");
@@ -357,8 +378,6 @@ register PMOP *pm;
            (void)strcat(buf,"ALL,");
        if (pm->op_pmflags & PMf_SKIPWHITE)
            (void)strcat(buf,"SKIPWHITE,");
-       if (pm->op_pmflags & PMf_FOLD)
-           (void)strcat(buf,"FOLD,");
        if (pm->op_pmflags & PMf_CONST)
            (void)strcat(buf,"CONST,");
        if (pm->op_pmflags & PMf_KEEP)