sub B::OP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
my $type = $op->type;
$nullop_count++ unless $type;
if ($type == $OP_THREADSV) {
sub B::UNOP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
$unopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x",
${$op->next}, ${$op->sibling}, $op->ppaddr,
$op->targ, $op->type, $op_seq, $op->flags,
sub B::BINOP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
$binopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x",
${$op->next}, ${$op->sibling}, $op->ppaddr,
$op->targ, $op->type, $op_seq, $op->flags,
sub B::LISTOP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
$listopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, %u",
${$op->next}, ${$op->sibling}, $op->ppaddr,
$op->targ, $op->type, $op_seq, $op->flags,
sub B::LOGOP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
$logopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x",
${$op->next}, ${$op->sibling}, $op->ppaddr,
$op->targ, $op->type, $op_seq, $op->flags,
sub B::CONDOP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
$condopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, s\\_%x",
${$op->next}, ${$op->sibling}, $op->ppaddr,
$op->targ, $op->type, $op_seq, $op->flags,
sub B::LOOP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
#warn sprintf("LOOP: redoop %s, nextop %s, lastop %s\n",
# peekop($op->redoop), peekop($op->nextop),
# peekop($op->lastop)); # debug
sub B::PVOP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
$pvopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, %s",
${$op->next}, ${$op->sibling}, $op->ppaddr,
$op->targ, $op->type, $op_seq, $op->flags,
sub B::SVOP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
my $svsym = $op->sv->save;
$svopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, %s",
${$op->next}, ${$op->sibling}, $op->ppaddr,
sub B::GVOP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
my $gvsym = $op->gv->save;
$gvopsect->add(sprintf("s\\_%x, s\\_%x, %s, %u, %u, %u, 0x%x, 0x%x, Nullgv",
${$op->next}, ${$op->sibling}, $op->ppaddr,
sub B::COP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
my $gvsym = $op->filegv->save;
my $stashsym = $op->stash->save;
warn sprintf("COP: line %d file %s\n", $op->line, $op->filegv->SV->PV)
sub B::PMOP::save {
my ($op, $level) = @_;
+ my $sym = objsym($op);
+ return $sym if defined $sym;
my $replroot = $op->pmreplroot;
my $replstart = $op->pmreplstart;
my $replrootfield = sprintf("s\\_%x", $$replroot);