This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Widen the feature bundle hint mask to 4 bits
authorDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Mon, 13 Jul 2020 22:33:55 +0000 (23:33 +0100)
committerDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Tue, 4 Aug 2020 09:37:54 +0000 (10:37 +0100)
VMS only uses two bits for its hints, so we can steal one more for the
feature bundles.  This is necessary if we want to remove features from
a future bundle, e.g. `indirect` and `switch`.

ext/B/t/concise.t
lib/feature.pm
perl.h

index 3541ce3..870429f 100644 (file)
@@ -521,7 +521,7 @@ like $out, qr/$end/, 'OP_AND->op_other points correctly';
     is(scalar(@hints), 3, "3 hints");
     is($hints[0], 'v:{',                           "hints[0]");
     is($hints[1], 'v:*,&,{,x*,x&,x$,$',            "hints[1]");
-    is($hints[2], 'v:us,*,&,{,x*,x&,x$,$,fea=7', "hints[2]");
+    is($hints[2], 'v:us,*,&,{,x*,x&,x$,$,fea=15',  "hints[2]");
 }
 
 __END__
index 1d3711e..b5ee2ec 100644 (file)
@@ -65,7 +65,7 @@ my %removed = (
 );
 
 our $hint_shift   = 26;
-our $hint_mask    = 0x1c000000;
+our $hint_mask    = 0x3c000000;
 our @hint_bundles = qw( default 5.10 5.11 5.15 5.23 5.27 );
 
 # This gets set (for now) in $^H as well as in %^H,
diff --git a/perl.h b/perl.h
index 8a90a91..219fa5e 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -5181,7 +5181,7 @@ typedef enum {
 
 #define HINT_RE_FLAGS          0x02000000 /* re '/xism' pragma */
 
-#define HINT_FEATURE_MASK      0x1c000000 /* 3 bits for feature bundles */
+#define HINT_FEATURE_MASK      0x3c000000 /* 4 bits for feature bundles */
 
                                /* Note: Used for HINT_M_VMSISH_*,
                                   currently defined by vms/vmsish.h: