sub B::LOGOP::mark_if_leader {
my $op = shift;
- my $ppaddr = $op->ppaddr;
+ my $opname = $op->name;
mark_leader($op->next);
- if ($ppaddr eq "pp_entertry") {
+ if ($opname eq "entertry") {
mark_leader($op->other->next);
} else {
mark_leader($op->other);
sub B::LISTOP::mark_if_leader {
my $op = shift;
my $first=$op->first;
- $first=$first->next while ($first->ppaddr eq "pp_null");
+ $first=$first->next while ($first->name eq "null");
mark_leader($op->first) unless (exists( $bblock->{$$first}));
mark_leader($op->next);
- if ($op->ppaddr eq "pp_sort" and $op->flags & OPf_SPECIAL
+ if ($op->name eq "sort" and $op->flags & OPf_SPECIAL
and $op->flags & OPf_STACKED){
my $root=$op->first->sibling->first;
my $leader=$root->first;
sub B::PMOP::mark_if_leader {
my $op = shift;
- if ($op->ppaddr ne "pp_pushre") {
+ if ($op->name ne "pushre") {
my $replroot = $op->pmreplroot;
if ($$replroot) {
mark_leader($replroot);
sub compile {
my @options = @_;
+ B::clearsym();
if (@options) {
return sub {
my $objname;
=head1 DESCRIPTION
-See F<ext/B/README>.
+This module is used by the B::CC back end. It walks "basic blocks".
+A basic block is a series of operations which is known to execute from
+start to finish, with no possiblity of branching or halting.
=head1 AUTHOR