This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add OP_FREED op type
authorFather Chrysostomos <sprout@cpan.org>
Sat, 23 Jun 2012 16:50:15 +0000 (09:50 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Fri, 29 Jun 2012 07:20:56 +0000 (00:20 -0700)
This is a dummy op type that should never be seen by any code except
op allocation code (to come).

So it is not in the usual list of opcodes, but is #defined outside the
range valid of opcodes.

opnames.h
regen/opcode.pl

index 8b6a39a..fd86d2a 100644 (file)
--- a/opnames.h
+++ b/opnames.h
@@ -392,6 +392,7 @@ typedef enum opcode {
 } opcode;
 
 #define MAXO 374
+#define OP_FREED MAXO
 
 /* the OP_IS_* macros are optimized to a simple range check because
     all the member OPs are contiguous in regen/opcodes table.
index d8186cd..1c15edc 100755 (executable)
@@ -46,6 +46,8 @@ while (<OPS>) {
     warn qq[Description "$desc" duplicates $seen{$desc}\n]
      if $seen{$desc} and $key ne "transr";
     die qq[Opcode "$key" duplicates $seen{$key}\n] if $seen{$key};
+    die qq[Opcode "freed" is reserved for the slab allocator\n]
+       if $key eq 'freed';
     $seen{$desc} = qq[description of opcode "$key"];
     $seen{$key} = qq[opcode "$key"];
 
@@ -189,6 +191,7 @@ for (@ops) {
 print $on "\t", tab(3,"OP_max"), "\n";
 print $on "} opcode;\n";
 print $on "\n#define MAXO ", scalar @ops, "\n";
+print $on "#define OP_FREED MAXO\n";
 
 # Emit op names and descriptions.