This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Create `defer` syntax and `OP_PUSHDEFER` opcode
[perl5.git] / regen / opcodes
index 18dc4fc..0192f1c 100644 (file)
@@ -2,8 +2,8 @@
 # The restriction on having custom as the last op has been removed
 
 # A recapitulation of the format of this file:
-# The file consists of five columns: the name of the op, an English
-# description, the name of the "check" routine used to optimize this
+# The file consists of five tab-separated columns: the name of the op, an
+# English description, the name of the "check" routine used to optimize this
 # operation, some flags, and a description of the operands.
 
 # The flags consist of options followed by a mandatory op class signifier
@@ -175,11 +175,9 @@ i_negate   integer negation (-)    ck_null         ifst1   S
 not            not                     ck_null         ifs1    S
 complement     1's complement (~)      ck_bitop        fst1    S
 ncomplement    numeric 1's complement (~)      ck_bitop        fsT1    S
-# scomplement uses ck_bitop only for the experimental warning.  Once the
-# warning is gone, this can change to ck_null.
-scomplement    string 1's complement (~)       ck_bitop        fsT1    S
+scomplement    string 1's complement (~)       ck_null fsT1    S
 
-smartmatch     smart match             ck_null         ifs2    S S
+smartmatch     smart match             ck_smartmatch   s2
 
 # High falutin' math.
 
@@ -399,6 +397,7 @@ getsockname getsockname             ck_fun          is%     Fs
 getpeername    getpeername             ck_fun          is%     Fs
 
 # Stat calls.  OP_IS_FILETEST wants them consecutive.
+# Also needs to match OP_IS_STAT() in op.h
 
 lstat          lstat                   ck_ftst         u-      F?
 stat           stat                    ck_ftst         u-      F?
@@ -573,3 +572,14 @@ lvref              lvalue ref assignment   ck_null         d%
 lvrefslice     lvalue ref assignment   ck_null         d@
 lvavref                lvalue array reference  ck_null         d%
 anonconst      anonymous constant      ck_null         ds1
+
+isa            derived class test      ck_isa          s2
+
+cmpchain_and   comparison chaining     ck_null         |
+cmpchain_dup   comparand shuffling     ck_null         1
+
+entertrycatch  try {block}             ck_trycatch     |
+leavetrycatch  try {block} exit        ck_null         @
+poptry         pop try                 ck_null         @
+catch          catch {} block          ck_null         |
+pushdefer      push defer {} block     ck_null         |