1N/A eval "walk_bblocks_obj(\\&$objname)";
1N/A die "walk_bblocks_obj(\\&$objname) failed: $@" if $@;
1N/A eval "concise_cv('exec', \\&$objname)";
1N/A die "concise_cv('exec', \\&$objname) failed: $@" if $@;
1N/A# Basic block leaders: 1N/A# Any COP (pp_nextstate) with a non-NULL label 1N/A# [The op after a pp_enter] Omit 1N/A# [The op after a pp_entersub. Don't count this one.] 1N/A# The ops pointed at by nextop, redoop and lastop->op_next of a LOOP 1N/A# The ops pointed at by op_next and op_other of a LOGOP, except 1N/A# for pp_entertry which has op_next and op_other->op_next 1N/A# The op pointed at by op_pmreplstart of a PMOP 1N/A# The op pointed at by op_other->op_pmreplstart of pp_substcont? 1N/A# [The op after a pp_return] Omit 1N/AB::Bblock - Walk basic blocks 1N/A # External interface 1N/A use B::Bblock qw(find_leaders); 1N/A my $leaders = find_leaders($root_op, $start_op); 1N/AThis module is used by the B::CC back end. It walks "basic blocks". 1N/AA basic block is a series of operations which is known to execute from 1N/Astart to finish, with no possiblity of branching or halting. 1N/AIt can be used either stand alone or from inside another program. 1N/ASomebody who understands the stand-alone options document them, please. 1N/A=item B<find_leaders> 1N/A my $leaders = find_leaders($root_op, $start_op); 1N/AGiven the root of the op tree and an op from which to start 1N/Aprocessing, it will return a hash ref representing all the ops which 1N/AThe above description may be somewhat wrong. 1N/AThe values of %$leaders are the op objects themselves. Keys are $$op 1N/AAbove cribbed from B::CC's comments. What's a $$op address? 1N/AMalcolm Beattie, C<mbeattie@sable.ox.ac.uk>