SET_NUMERIC_STANDARD();
sv_catpvf(t, "(%g)",SvNVX(sv));
}
- else if (SvIOKp(sv))
- sv_catpvf(t, "(%ld)",(long)SvIVX(sv));
+ else if (SvIOKp(sv)) { /* XXXX: IV, UV? */
+ if (SvIsUV(sv))
+ sv_catpvf(t, "(%lu)",(unsigned long)SvUVX(sv));
+ else
+ sv_catpvf(t, "(%ld)",(long)SvIVX(sv));
+ }
else
sv_catpv(t, "()");
else if (o->op_type == OP_CONST) {
if (o->op_private & OPpCONST_BARE)
sv_catpv(tmpsv, ",BARE");
+ if (o->op_private & OPpCONST_STRICT)
+ sv_catpv(tmpsv, ",STRICT");
}
else if (o->op_type == OP_FLIP) {
if (o->op_private & OPpFLIP_LINENUM)
#endif
else if (v == &PL_vtbl_amagic) s = "amagic";
else if (v == &PL_vtbl_amagicelem) s = "amagicelem";
+ else if (v == &PL_vtbl_backref) s = "backref";
if (s)
dump_indent(level, file, " MG_VIRTUAL = &PL_vtbl_%s\n", s);
else
if (flags & SVf_IOK) sv_catpv(d, "IOK,");
if (flags & SVf_NOK) sv_catpv(d, "NOK,");
if (flags & SVf_POK) sv_catpv(d, "POK,");
- if (flags & SVf_ROK) sv_catpv(d, "ROK,");
+ if (flags & SVf_ROK) {
+ sv_catpv(d, "ROK,");
+ if (SvWEAKREF(sv)) sv_catpv(d, "WEAKREF,");
+ }
if (flags & SVf_OOK) sv_catpv(d, "OOK,");
if (flags & SVf_FAKE) sv_catpv(d, "FAKE,");
if (flags & SVf_READONLY) sv_catpv(d, "READONLY,");
if (CvCLONE(sv)) sv_catpv(d, "CLONE,");
if (CvCLONED(sv)) sv_catpv(d, "CLONED,");
if (CvNODEBUG(sv)) sv_catpv(d, "NODEBUG,");
+ if (SvCOMPILED(sv)) sv_catpv(d, "COMPILED,");
break;
case SVt_PVHV:
if (HvSHAREKEYS(sv)) sv_catpv(d, "SHAREKEYS,");
sv_catpv(d, " ),");
}
}
+ /* FALL THROGH */
+ default:
+ if (SvEVALED(sv)) sv_catpv(d, "EVALED,");
+ if (SvIsUV(sv)) sv_catpv(d, "IsUV,");
+ break;
case SVt_PVBM:
if (SvTAIL(sv)) sv_catpv(d, "TAIL,");
- if (SvCOMPILED(sv)) sv_catpv(d, "COMPILED,");
+ if (SvVALID(sv)) sv_catpv(d, "VALID,");
break;
}
return;
}
if (type >= SVt_PVIV || type == SVt_IV) {
- dump_indent(level, file, " IV = %ld", (long)SvIVX(sv));
+ if (SvIsUV(sv))
+ dump_indent(level, file, " UV = %lu", (unsigned long)SvUVX(sv));
+ else
+ dump_indent(level, file, " IV = %ld", (long)SvIVX(sv));
if (SvOOK(sv))
PerlIO_printf(file, " (OFFSET)");
PerlIO_putc(file, '\n');
dump_indent(level, file, " PAGE = %ld\n", (long)IoPAGE(sv));
dump_indent(level, file, " PAGE_LEN = %ld\n", (long)IoPAGE_LEN(sv));
dump_indent(level, file, " LINES_LEFT = %ld\n", (long)IoLINES_LEFT(sv));
- dump_indent(level, file, " TOP_NAME = \"%s\"\n", IoTOP_NAME(sv));
+ if (IoTOP_NAME(sv))
+ dump_indent(level, file, " TOP_NAME = \"%s\"\n", IoTOP_NAME(sv));
do_gv_dump (level, file, " TOP_GV", IoTOP_GV(sv));
- dump_indent(level, file, " FMT_NAME = \"%s\"\n", IoFMT_NAME(sv));
+ if (IoFMT_NAME(sv))
+ dump_indent(level, file, " FMT_NAME = \"%s\"\n", IoFMT_NAME(sv));
do_gv_dump (level, file, " FMT_GV", IoFMT_GV(sv));
- dump_indent(level, file, " BOTTOM_NAME = \"%s\"\n", IoBOTTOM_NAME(sv));
+ if (IoBOTTOM_NAME(sv))
+ dump_indent(level, file, " BOTTOM_NAME = \"%s\"\n", IoBOTTOM_NAME(sv));
do_gv_dump (level, file, " BOTTOM_GV", IoBOTTOM_GV(sv));
dump_indent(level, file, " SUBPROCESS = %ld\n", (long)IoSUBPROCESS(sv));
- dump_indent(level, file, " TYPE = %c\n", IoTYPE(sv));
+ if (isPRINT(IoTYPE(sv)))
+ dump_indent(level, file, " TYPE = '%c'\n", IoTYPE(sv));
+ else
+ dump_indent(level, file, " TYPE = '\\%o'\n", IoTYPE(sv));
dump_indent(level, file, " FLAGS = 0x%lx\n", (long)IoFLAGS(sv));
break;
}