+ Perl_dump_indent(aTHX_ level, file, "SV = ");
+ switch (type) {
+ case SVt_NULL:
+ PerlIO_printf(file, "NULL%s\n", s);
+ return;
+ case SVt_IV:
+ PerlIO_printf(file, "IV%s\n", s);
+ break;
+ case SVt_NV:
+ PerlIO_printf(file, "NV%s\n", s);
+ break;
+ case SVt_RV:
+ PerlIO_printf(file, "RV%s\n", s);
+ break;
+ case SVt_PV:
+ PerlIO_printf(file, "PV%s\n", s);
+ break;
+ case SVt_PVIV:
+ PerlIO_printf(file, "PVIV%s\n", s);
+ break;
+ case SVt_PVNV:
+ PerlIO_printf(file, "PVNV%s\n", s);
+ break;
+ case SVt_PVBM:
+ PerlIO_printf(file, "PVBM%s\n", s);
+ break;
+ case SVt_PVMG:
+ PerlIO_printf(file, "PVMG%s\n", s);
+ break;
+ case SVt_PVLV:
+ PerlIO_printf(file, "PVLV%s\n", s);
+ break;
+ case SVt_PVAV:
+ PerlIO_printf(file, "PVAV%s\n", s);
+ break;
+ case SVt_PVHV:
+ PerlIO_printf(file, "PVHV%s\n", s);
+ break;
+ case SVt_PVCV:
+ PerlIO_printf(file, "PVCV%s\n", s);
+ break;
+ case SVt_PVGV:
+ PerlIO_printf(file, "PVGV%s\n", s);
+ break;
+ case SVt_PVFM:
+ PerlIO_printf(file, "PVFM%s\n", s);
+ break;
+ case SVt_PVIO:
+ PerlIO_printf(file, "PVIO%s\n", s);
+ break;
+ default:
+ PerlIO_printf(file, "UNKNOWN(0x%x) %s\n", type, s);
+ return;
+ }
+ if (type >= SVt_PVIV || type == SVt_IV) {
+#ifdef IV_IS_QUAD
+ if (SvIsUV(sv))
+ Perl_dump_indent(aTHX_ level, file, " UV = %" PERL_PRIu64, (UV)SvUVX(sv));
+ else
+ Perl_dump_indent(aTHX_ level, file, " IV = %" PERL_PRId64, (IV)SvIVX(sv));
+#else
+ if (SvIsUV(sv))
+ Perl_dump_indent(aTHX_ level, file, " UV = %lu", (unsigned long)SvUVX(sv));
+ else
+ Perl_dump_indent(aTHX_ level, file, " IV = %ld", (long)SvIVX(sv));
+#endif
+ if (SvOOK(sv))
+ PerlIO_printf(file, " (OFFSET)");
+ PerlIO_putc(file, '\n');
+ }
+ if (type >= SVt_PVNV || type == SVt_NV) {
+ RESTORE_NUMERIC_STANDARD();
+#ifdef USE_LONG_DOUBLE
+ Perl_dump_indent(aTHX_ level, file, " NV = %.*" PERL_PRIgldbl "\n", LDBL_DIG, SvNVX(sv));
+#else
+ Perl_dump_indent(aTHX_ level, file, " NV = %.*g\n", DBL_DIG, SvNVX(sv));
+#endif
+ RESTORE_NUMERIC_LOCAL();
+ }
+ if (SvROK(sv)) {
+#ifdef IV_IS_QUAD
+ Perl_dump_indent(aTHX_ level, file, " RV = 0x%" PERL_PRIx64 "\n", PTR2IV(SvRV(sv)));
+#else
+ Perl_dump_indent(aTHX_ level, file, " RV = 0x%lx\n", (long)SvRV(sv));
+#endif
+ if (nest < maxnest)
+ do_sv_dump(level+1, file, SvRV(sv), nest+1, maxnest, dumpops, pvlim);
+ return;
+ }
+ if (type < SVt_PV)
+ return;
+ if (type <= SVt_PVLV) {
+ if (SvPVX(sv)) {
+#ifdef IV_IS_QUAD
+ Perl_dump_indent(aTHX_ level, file," PV = 0x%" PERL_PRIx64 " ", PTR2IV(SvPVX(sv)));
+#else
+ Perl_dump_indent(aTHX_ level, file," PV = 0x%lx ", (long)SvPVX(sv));
+#endif
+ if (SvOOK(sv))
+ PerlIO_printf(file, "( %s . ) ", pv_display(d, SvPVX(sv)-SvIVX(sv), SvIVX(sv), 0, pvlim));
+ PerlIO_printf(file, "%s\n", pv_display(d, SvPVX(sv), SvCUR(sv), SvLEN(sv), pvlim));
+#ifdef IV_IS_QUAD
+ Perl_dump_indent(aTHX_ level, file, " CUR = %" PERL_PRId64 "\n", (IV)SvCUR(sv));
+ Perl_dump_indent(aTHX_ level, file, " LEN = %" PERL_PRId64 "\n", (IV)SvLEN(sv));
+#else
+ Perl_dump_indent(aTHX_ level, file, " CUR = %ld\n", (long)SvCUR(sv));
+ Perl_dump_indent(aTHX_ level, file, " LEN = %ld\n", (long)SvLEN(sv));
+#endif
+ }
+ else
+ Perl_dump_indent(aTHX_ level, file, " PV = 0\n");
+ }
+ if (type >= SVt_PVMG) {
+ if (SvMAGIC(sv))
+ do_magic_dump(level, file, SvMAGIC(sv), nest, maxnest, dumpops, pvlim);
+ if (SvSTASH(sv))
+ do_hv_dump(level, file, " STASH", SvSTASH(sv));
+ }
+ switch (type) {
+ case SVt_PVLV:
+ Perl_dump_indent(aTHX_ level, file, " TYPE = %c\n", LvTYPE(sv));
+#ifdef IV_IS_QUAD
+ Perl_dump_indent(aTHX_ level, file, " TARGOFF = %" PERL_PRId64 "\n", (IV)LvTARGOFF(sv));
+ Perl_dump_indent(aTHX_ level, file, " TARGLEN = %" PERL_PRId64 "\n", (IV)LvTARGLEN(sv));
+ Perl_dump_indent(aTHX_ level, file, " TARG = 0x%" PERL_PRIx64 "\n", PTR2IV(LvTARG(sv)));
+#else
+ Perl_dump_indent(aTHX_ level, file, " TARGOFF = %ld\n", (long)LvTARGOFF(sv));
+ Perl_dump_indent(aTHX_ level, file, " TARGLEN = %ld\n", (long)LvTARGLEN(sv));
+ Perl_dump_indent(aTHX_ level, file, " TARG = 0x%lx\n", (long)LvTARG(sv));
+#endif
+ /* XXX level+1 ??? */
+ do_sv_dump(level, file, LvTARG(sv), nest+1, maxnest, dumpops, pvlim);
+ break;
+ case SVt_PVAV:
+#ifdef IV_IS_QUAD
+ Perl_dump_indent(aTHX_ level, file, " ARRAY = 0x%" PERL_PRIx64 , PTR2IV(AvARRAY(sv)));
+#else
+ Perl_dump_indent(aTHX_ level, file, " ARRAY = 0x%lx", (long)AvARRAY(sv));
+#endif
+ if (AvARRAY(sv) != AvALLOC(sv)) {
+ PerlIO_printf(file, " (offset=%d)\n", (AvARRAY(sv) - AvALLOC(sv)));
+#ifdef IV_IS_QUAD
+ Perl_dump_indent(aTHX_ level, file, " ALLOC = 0x%" PERL_PRIx64 "\n", PTR2IV(AvALLOC(sv)));
+#else
+ Perl_dump_indent(aTHX_ level, file, " ALLOC = 0x%lx\n", (long)AvALLOC(sv));
+#endif
+ }
+ else
+ PerlIO_putc(file, '\n');
+#ifdef IV_IS_QUAD
+ Perl_dump_indent(aTHX_ level, file, " FILL = %" PERL_PRId64 "\n", (IV)AvFILLp(sv));
+ Perl_dump_indent(aTHX_ level, file, " MAX = %" PERL_PRId64 "\n", (IV)AvMAX(sv));
+ Perl_dump_indent(aTHX_ level, file, " ARYLEN = 0x%" PERL_PRIx64 "\n", PTR2IV(AvARYLEN(sv)));
+#else
+ Perl_dump_indent(aTHX_ level, file, " FILL = %ld\n", (long)AvFILLp(sv));
+ Perl_dump_indent(aTHX_ level, file, " MAX = %ld\n", (long)AvMAX(sv));
+ Perl_dump_indent(aTHX_ level, file, " ARYLEN = 0x%lx\n", (long)AvARYLEN(sv));
+#endif
+ flags = AvFLAGS(sv);
+ sv_setpv(d, "");
+ if (flags & AVf_REAL) sv_catpv(d, ",REAL");
+ if (flags & AVf_REIFY) sv_catpv(d, ",REIFY");
+ if (flags & AVf_REUSED) sv_catpv(d, ",REUSED");
+ Perl_dump_indent(aTHX_ level, file, " FLAGS = (%s)\n", SvCUR(d) ? SvPVX(d) + 1 : "");
+ if (nest < maxnest && av_len((AV*)sv) >= 0) {
+ int count;
+ for (count = 0; count <= av_len((AV*)sv) && count < maxnest; count++) {
+ SV** elt = av_fetch((AV*)sv,count,0);