summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--opcode.h4
-rwxr-xr-xopcode.pl16
2 files changed, 17 insertions, 3 deletions
diff --git a/opcode.h b/opcode.h
index e7af19b866..d52088a7cb 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 571fa14ae7..a3284dae3b 100755
--- a/opcode.pl
+++ b/opcode.pl
@@ -33,6 +33,19 @@ while (<DATA>) {
$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 <<END;