package B::Debug;
our $VERSION = '1.01';
use strict;
use B::Asmdata qw(@specialsv_name);
my %done_gv;
my ($op) = @_;
printf <<'EOT', class($op), $$op, ${$op->next}, ${$op->sibling}, $op->ppaddr, $op->targ, $op->type, $op->seq, $op->flags, $op->private;
%s (0x%lx)
op_next 0x%x
op_sibling 0x%x
op_ppaddr %s
op_targ %d
op_type %d
op_seq %d
op_flags %d
op_private %d
}
my ($op) = @_;
}
my ($op) = @_;
printf "\top_last\t\t0x%x\n", ${$op->last};
}
my ($op) = @_;
op_redoop 0x%x
op_nextop 0x%x
op_lastop 0x%x
}
my ($op) = @_;
}
my ($op) = @_;
}
my ($op) = @_;
}
my ($op) = @_;
printf <<'EOT', $op->label, $op->stashpv, $op->file, $op->cop_seq, $op->arybase, $op->line, ${$op->warnings}, cstring($cop_io);
cop_label %s
cop_stashpv %s
cop_file %s
cop_seq %d
cop_arybase %d
cop_line %d
cop_warnings 0x%x
cop_io %s
}
my ($op) = @_;
}
my ($op) = @_;
}
my ($op) = @_;
}
my ($sv) = @_;
print "&sv_undef\n";
} else {
printf "NULL (0x%x)\n", $$sv;
}
}
my ($sv) = @_;
if (!$$sv) {
return;
}
%s (0x%x)
REFCNT %d
FLAGS 0x%x
}
my ($rv) = @_;
RV 0x%x
}
my ($sv) = @_;
xpv_pv %s
xpv_cur %d
}
my ($sv) = @_;
}
my ($sv) = @_;
}
my ($sv) = @_;
}
my ($sv) = @_;
}
my ($sv) = @_;
}
my ($sv) = @_;
}
my ($sv) = @_;
printf <<'EOT', $$stash, $$start, $$root, $$gv, $file, $sv->DEPTH, $padlist, ${$sv->OUTSIDE}, $sv->OUTSIDE_SEQ;
STASH 0x%x
START 0x%x
ROOT 0x%x
GV 0x%x
FILE %s
DEPTH %d
PADLIST 0x%x
OUTSIDE 0x%x
OUTSIDE_SEQ %d
}
my ($av) = @_;
FILL %d
MAX %d
OFF %d
AvFLAGS %d
}
my ($gv) = @_;
return;
}
printf <<'EOT', $gv->SAFENAME, $gv->STASH->NAME, $gv->STASH, $$sv, $gv->GvREFCNT, $gv->FORM, $$av, ${$gv->HV}, ${$gv->EGV}, $$cv, $gv->CVGEN, $gv->LINE, $gv->FILE, $gv->GvFLAGS;
NAME %s
STASH %s (0x%x)
SV 0x%x
GvREFCNT %d
FORM 0x%x
AV 0x%x
HV 0x%x
EGV 0x%x
CV 0x%x
CVGEN %d
LINE %d
FILE %s
GvFLAGS 0x%x
}
my $sv = shift;
}
sub compile {
my $order = shift;
B::clearsym();
} else {
}
}
1;
=head1 NAME
B::Debug - Walk Perl syntax tree, printing debug info about ops
=head1 SYNOPSIS
perl -MO=Debug[,OPTIONS] foo.pl
=head1 DESCRIPTION
=head1 AUTHOR
Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
=cut