summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2004-03-23 16:05:28 +0000
committerNicholas Clark <nick@ccl4.org>2004-03-23 16:05:28 +0000
commit4ac6efe6a6c1b2863c78d1bdeea777d72325d712 (patch)
tree88872fe3c26e15aa80a364e9b7cccf887a76b5ca /ext
parent547d1dd82362229be47f8169355ee7b5b98dd403 (diff)
downloadperl-4ac6efe6a6c1b2863c78d1bdeea777d72325d712.tar.gz
Unify 5.008 and 5.009's B::Concise 0.56
p4raw-id: //depot/perl@22565
Diffstat (limited to 'ext')
-rw-r--r--ext/B/B/Concise.pm17
1 files changed, 12 insertions, 5 deletions
diff --git a/ext/B/B/Concise.pm b/ext/B/B/Concise.pm
index 7736f96f81..b458259a47 100644
--- a/ext/B/B/Concise.pm
+++ b/ext/B/B/Concise.pm
@@ -435,6 +435,7 @@ $priv{$_}{128} = "LVINTRO"
"padav", "padhv", "enteriter");
$priv{$_}{64} = "REFC" for ("leave", "leavesub", "leavesublv", "leavewrite");
$priv{"aassign"}{64} = "COMMON";
+$priv{"aassign"}{32} = "PHASH" if $] < 5.009;
$priv{"sassign"}{64} = "BKWARD";
$priv{$_}{64} = "RTIME" for ("match", "subst", "substcont");
@{$priv{"trans"}}{1,2,4,8,16,64} = ("<UTF", ">UTF", "IDENT", "SQUASH", "DEL",
@@ -558,11 +559,17 @@ sub concise_op {
if (defined $padname and class($padname) ne "SPECIAL") {
$h{targarg} = $padname->PVX;
if ($padname->FLAGS & SVf_FAKE) {
- my $fake = '';
- $fake .= 'a' if $padname->IVX & 1; # PAD_FAKELEX_ANON
- $fake .= 'm' if $padname->IVX & 2; # PAD_FAKELEX_MULTI
- $fake .= ':' . $padname->NVX if $curcv->CvFLAGS & CVf_ANON;
- $h{targarglife} = "$h{targarg}:FAKE:$fake";
+ if ($] < 5.009) {
+ $h{targarglife} = "$h{targarg}:FAKE";
+ } else {
+ # These changes relate to the jumbo closure fix.
+ # See changes 19939 and 20005
+ my $fake = '';
+ $fake .= 'a' if $padname->IVX & 1; # PAD_FAKELEX_ANON
+ $fake .= 'm' if $padname->IVX & 2; # PAD_FAKELEX_MULTI
+ $fake .= ':' . $padname->NVX if $curcv->CvFLAGS & CVf_ANON;
+ $h{targarglife} = "$h{targarg}:FAKE:$fake";
+ }
}
else {
my $intro = $padname->NVX - $cop_seq_base;