Curiously none of the macros SvIVX, SvUVX or SvNVX are used on
Nicholas Clark [Sat, 25 Feb 2006 15:11:28 +0000 (15:11 +0000)]
typeglobs.

p4raw-id: //depot/perl@27325

dump.c
ext/Devel/Peek/t/Peek.t
sv.h

diff --git a/dump.c b/dump.c
index 2c6aa23..478cc17 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -1281,8 +1281,9 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
        SvREFCNT_dec(d);
        return;
     }
-    if (type == SVt_IV || (type >= SVt_PVIV && type != SVt_PVAV
-                          && type != SVt_PVHV && type != SVt_PVCV)) {
+    if ((type >= SVt_PVIV && type != SVt_PVAV && type != SVt_PVHV
+        && type != SVt_PVCV && !isGV_with_GP(sv))
+       || type == SVt_IV) {
        if (SvIsUV(sv)
 #ifdef PERL_OLD_COPY_ON_WRITE
                       || SvIsCOW(sv)
@@ -1302,7 +1303,7 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
        PerlIO_putc(file, '\n');
     }
     if ((type >= SVt_PVNV && type != SVt_PVAV && type != SVt_PVHV
-        && type != SVt_PVCV && type != SVt_PVFM)
+        && type != SVt_PVCV && type != SVt_PVFM && !isGV_with_GP(sv))
        || type == SVt_NV) {
        STORE_NUMERIC_LOCAL_SET_STANDARD();
        /* %Vg doesn't work? --jhi */
index fdf57a9..f40bc5e 100644 (file)
@@ -306,8 +306,6 @@ do_test(17,
 'SV = PVGV\\($ADDR\\) at $ADDR
   REFCNT = 5
   FLAGS = \\(SCREAM,MULTI(?:,IN_PAD)?\\)
-  IV = 0
-  NV = 0
   NAME = "a"
   NAMELEN = 1
   GvSTASH = $ADDR\\t"main"
diff --git a/sv.h b/sv.h
index c509ac6..1d62a88 100644 (file)
--- a/sv.h
+++ b/sv.h
@@ -1019,6 +1019,7 @@ in gv.h: */
            assert(SvTYPE(_svi) != SVt_PVAV);                           \
            assert(SvTYPE(_svi) != SVt_PVHV);                           \
            assert(SvTYPE(_svi) != SVt_PVCV);                           \
+           assert(!isGV_with_GP(_svi));                                \
            &(((XPVIV*) SvANY(_svi))->xiv_iv);                          \
         }))
 #    define SvUVX(sv)                                                  \
@@ -1027,6 +1028,7 @@ in gv.h: */
            assert(SvTYPE(_svi) != SVt_PVAV);                           \
            assert(SvTYPE(_svi) != SVt_PVHV);                           \
            assert(SvTYPE(_svi) != SVt_PVCV);                           \
+           assert(!isGV_with_GP(_svi));                                \
            &(((XPVUV*) SvANY(_svi))->xuv_uv);                          \
         }))
 #    define SvNVX(sv)                                                  \
@@ -1035,6 +1037,7 @@ in gv.h: */
            assert(SvTYPE(_svi) != SVt_PVAV);                           \
            assert(SvTYPE(_svi) != SVt_PVHV);                           \
            assert(SvTYPE(_svi) != SVt_PVFM);                           \
+           assert(!isGV_with_GP(_svi));                                \
           &(((XPVNV*) SvANY(_svi))->xnv_nv);                           \
         }))
 #    define SvMAGIC(sv)                                                        \