This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Replace references to PL_vtbl_{bm,fm} in the code with PL_vtbl_regexp.
[perl5.git] / regen / mg_vtable.pl
index d09bfda..0e78029 100644 (file)
@@ -39,11 +39,9 @@ my @sig =
      'substr' => {get => 'getsubstr', set => 'setsubstr'},
      'vec' => {get => 'getvec', set => 'setvec'},
      'pos' => {get => 'getpos', set => 'setpos'},
-     'bm' => {set => 'setregexp'},
-     'fm' => {set => 'setregexp'},
      'uvar' => {get => 'getuvar', set => 'setuvar'},
      'defelem' => {get => 'getdefelem', set => 'setdefelem'},
-     'regexp' => {set => 'setregexp'},
+     'regexp' => {set => 'setregexp', alias => [qw(bm fm)]},
      'regdata' => {len => 'regdata_cnt'},
      'regdatum' => {get => 'regdatum_get', set => 'regdatum_set'},
      'amagic' => {set => 'setamagic', free => 'setamagic'},
@@ -63,6 +61,7 @@ my $h = open_new('mg_vtable.h', '>',
 
 {
     my @names = map {"want_vtbl_$_"} grep {!ref $_} @sig;
+    push @names, 'magic_vtable_max';
     local $" = ",\n    ";
     print $h <<"EOH";
 enum {         /* pass one of these to get_vtbl */
@@ -91,10 +90,11 @@ print $h <<'EOH';
 */
 
 #ifdef DOINIT
-EXT_MGVTBL PL_magic_vtables[] = {
+EXT_MGVTBL PL_magic_vtables[magic_vtable_max] = {
 EOH
 
 my @vtable_names;
+my @aliases;
 
 while (my ($name, $data) = splice @sig, 0, 2) {
     push @vtable_names, $name;
@@ -115,16 +115,21 @@ while (my ($name, $data) = splice @sig, 0, 2) {
   { 0, 0, 0, 0, 0, 0, 0, 0 }$comma
 #endif
 EOH
+    foreach(@{$data->{alias}}) {
+       push @aliases, "#define want_vtbl_$_ want_vtbl_$name\n";
+       push @vtable_names, $_;
+    }
 }
 
 print $h <<'EOH';
 };
 #else
-EXT_MGVTBL PL_magic_vtables[];
+EXT_MGVTBL PL_magic_vtables[magic_vtable_max];
 #endif
 
 EOH
 
+print $h (sort @aliases), "\n";
 
 print $h "#define PL_vtbl_$_ PL_magic_vtables[want_vtbl_$_]\n"
     foreach sort @vtable_names;