This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Give feature.pm the bundle hints
authorFather Chrysostomos <sprout@cpan.org>
Fri, 23 Dec 2011 02:07:49 +0000 (18:07 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 24 Dec 2011 17:25:16 +0000 (09:25 -0800)
It’s going to need them, in order to determine which list of features
is currently enabled.

lib/feature.pm
regen/feature.pl

index d68c8ec..8f9467a 100644 (file)
@@ -34,6 +34,10 @@ $feature_bundle{"5.14"} = $feature_bundle{"5.11"};
 $feature_bundle{"5.16"} = $feature_bundle{"5.15"};
 $feature_bundle{"5.9.5"} = $feature_bundle{"5.10"};
 
+my $hint_shift   = 26;
+my $hint_mask    = 0x1c000000;
+my @hint_bundles = qw( default 5.10 5.11 5.15 );
+
 # This gets set (for now) in $^H as well as in %^H,
 # for runtime speed of the uc/lc/ucfirst/lcfirst functions.
 # See HINT_UNI_8_BIT in perl.h.
index 4f439e9..a6896fe 100755 (executable)
@@ -86,13 +86,14 @@ for my $bund (
 }
 
 my $HintShift;
+my $HintMask;
 
 open "perl.h", "perl.h" or die "$0 cannot open perl.h: $!";
 perlh: {
     while (readline "perl.h") {
        next unless /#define\s+HINT_FEATURE_MASK/;
        /(0x[A-Fa-f0-9]+)/ or die "No hex number in:\n\n$_\n ";
-       my $hex = $1;
+       my $hex = $HintMask = $1;
        my $bits = sprintf "%b", oct $1;
        $bits =~ /^0*1+(0*)\z/
         or die "Non-contiguous bits in $bits (binary for $hex):\n\n$_\n ";
@@ -108,6 +109,9 @@ perlh: {
 }
 close "perl.h";
 
+my @HintedBundles =
+    ('default', grep !/[^\d.]/, sort values %UniqueBundles);
+
 
 ###########################################################################
 # Open files to be generated
@@ -166,6 +170,13 @@ for (sort keys %Aliases) {
        qq'\$feature_bundle{"$_"} = \$feature_bundle{"$Aliases{$_}"};\n';
 };
 
+print $pm <<EOPM;
+
+my \$hint_shift   = $HintShift;
+my \$hint_mask    = $HintMask;
+my \@hint_bundles = qw( @HintedBundles );
+EOPM
+
 
 while (<DATA>) {
     last if /^PODTURES$/ ;