summaryrefslogtreecommitdiff
path: root/ext/B/B/Deparse.pm
diff options
context:
space:
mode:
Diffstat (limited to 'ext/B/B/Deparse.pm')
-rw-r--r--ext/B/B/Deparse.pm13
1 files changed, 9 insertions, 4 deletions
diff --git a/ext/B/B/Deparse.pm b/ext/B/B/Deparse.pm
index 9ba24420b8..5685d0914f 100644
--- a/ext/B/B/Deparse.pm
+++ b/ext/B/B/Deparse.pm
@@ -570,7 +570,6 @@ sub new {
$self->{'ambient_warnings'} = undef; # Assume no lexical warnings
$self->{'ambient_hints'} = 0;
$self->{'ambient_hinthash'} = undef;
- $self->{'inlined_constants'} = $self->scan_for_constants;
$self->init();
while (my $arg = shift @_) {
@@ -3655,10 +3654,16 @@ sub const {
if (class($sv) eq "SPECIAL") {
# sv_undef, sv_yes, sv_no
return ('undef', '1', $self->maybe_parens("!1", $cx, 21))[$$sv-1];
- } elsif (class($sv) eq "NULL") {
+ }
+ if (class($sv) eq "NULL") {
return 'undef';
- } elsif ($cx and my $const = $self->{'inlined_constants'}->{ 0 + $sv->object_2svref }) {
- return $const;
+ }
+ if ($cx) {
+ unless ($self->{'inlined_constants'}) {
+ $self->{'inlined_constants'} = $self->scan_for_constants;
+ }
+ my $const = $self->{'inlined_constants'}->{ 0 + $sv->object_2svref };
+ return $const if $const;
}
# convert a version object into the "v1.2.3" string in its V magic
if ($sv->FLAGS & SVs_RMG) {