From: Nicholas Clark Date: Mon, 31 Oct 2005 15:52:50 +0000 (+0000) Subject: It appears that it's trivially easy to alias opcode functions in X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=1d5774de323ac43a91c2a30cf2e40384e4754f98;p=p5sagit%2Fp5-mst-13.2.git It appears that it's trivially easy to alias opcode functions in the opcode table. We should be able to get both a speed and size saving here. Time will tell how much. p4raw-id: //depot/perl@25929 --- diff --git a/opcode.h b/opcode.h index e7af19b..d52088a 100644 --- a/opcode.h +++ b/opcode.h @@ -894,8 +894,8 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_aelem), MEMBER_TO_FPTR(Perl_pp_aslice), MEMBER_TO_FPTR(Perl_pp_each), - MEMBER_TO_FPTR(Perl_pp_values), - MEMBER_TO_FPTR(Perl_pp_keys), + MEMBER_TO_FPTR(Perl_do_kv), + MEMBER_TO_FPTR(Perl_do_kv), MEMBER_TO_FPTR(Perl_pp_delete), MEMBER_TO_FPTR(Perl_pp_exists), MEMBER_TO_FPTR(Perl_pp_rv2hv), diff --git a/opcode.pl b/opcode.pl index 571fa14..a3284da 100755 --- a/opcode.pl +++ b/opcode.pl @@ -33,6 +33,19 @@ while () { $args{$key} = $args; } +# Set up aliases + +my %alias; + +# Format is "this function" => "does these op names" +my @raw_alias = ( + Perl_do_kv => 'keys values', + ); + +while (my ($func, $names) = splice @raw_alias, 0, 2) { + $alias{$_} = $func foreach split ' ', $names; +} + # Emit defines. $i = 0; @@ -170,7 +183,8 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ END for (@ops) { - print "\tMEMBER_TO_FPTR(Perl_pp_$_),\n" unless $_ eq "custom"; + my $name = $alias{$_} || "Perl_pp_$_"; + print "\tMEMBER_TO_FPTR($name),\n" unless $_ eq "custom"; } print <