diff options
Diffstat (limited to 'lib/B/Deparse.pm')
-rw-r--r-- | lib/B/Deparse.pm | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/B/Deparse.pm b/lib/B/Deparse.pm index 731e9cefc4..5254f86d66 100644 --- a/lib/B/Deparse.pm +++ b/lib/B/Deparse.pm @@ -460,6 +460,7 @@ sub _pessimise_walk_exe { sub pessimise { my ($self, $root, $start) = @_; + no warnings 'recursion'; # walk tree in root-to-branch order $self->_pessimise_walk($root); @@ -474,6 +475,9 @@ sub null { return class($op) eq "NULL"; } + +# Add a CV to the list of subs that still need deparsing. + sub todo { my $self = shift; my($cv, $is_form, $name) = @_; @@ -490,6 +494,9 @@ sub todo { push @{$self->{'subs_todo'}}, [$seq, $cv, $is_form, $name]; } + +# Pop the next sub from the todo list and deparse it + sub next_todo { my $self = shift; my $ent = shift @{$self->{'subs_todo'}}; @@ -1300,6 +1307,9 @@ sub deparse_argops { return ($o, join(', ', @sig)); } +# Deparse a sub. Returns everything except the 'sub foo', +# e.g. ($$) : method { ...; } +# or ($a, $b) : prototype($$) lvalue; sub deparse_sub { my $self = shift; |