/* 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.
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);
{
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",
{
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)));
#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)
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)
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;
}
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");
(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)