This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Change docs display for PERL_UNUSED_foo
[perl5.git] / regen / opcodes
index cbf38dc..4d5ba36 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
@@ -57,8 +57,6 @@ padav         private array           ck_null         d0
 padhv          private hash            ck_null         d0
 padany         private value           ck_null         d0
 
-pushre         push regexp             ck_null         d/
-
 # References and stuff.
 
 rv2gv          ref-to-glob cast        ck_rvconst      ds1     
@@ -94,9 +92,8 @@ trans         transliteration (tr///) ck_match        is"     S
 transr         transliteration (tr///) ck_match        is"     S
 
 # Lvalue operators.
-# sassign is special-cased for op class
 
-sassign                scalar assignment       ck_sassign      s0
+sassign                scalar assignment       ck_sassign      s2      S S
 aassign                list assignment         ck_null         t2      L L
 
 chop           chop                    ck_spair        mts%    L
@@ -127,13 +124,14 @@ divide            division (/)            ck_null         IfsT2   S S
 i_divide       integer division (/)    ck_null         ifsT2   S S
 modulo         modulus (%)             ck_null         IifsT2  S S
 i_modulo       integer modulus (%)     ck_null         ifsT2   S S
-repeat         repeat (x)              ck_repeat       fmT2    L S
+repeat         repeat (x)              ck_repeat       fmt2    L S
 
 add            addition (+)            ck_null         IfsT2   S S
 i_add          integer addition (+)    ck_null         ifsT2   S S
 subtract       subtraction (-)         ck_null         IfsT2   S S
 i_subtract     integer subtraction (-) ck_null         ifsT2   S S
 concat         concatenation (.) or string     ck_concat       fsT2    S S
+multiconcat    concatenation (.) or string     ck_null sT+
 stringify      string                  ck_stringify    fsT@    S
 
 left_shift     left bitshift (<<)      ck_bitop        fsT2    S S
@@ -147,12 +145,12 @@ le                numeric le (<=)         ck_cmp          Iifs2   S S<
 i_le           integer le (<=)         ck_cmp          ifs2    S S<
 ge             numeric ge (>=)         ck_cmp          Iifs2   S S<
 i_ge           integer ge (>=)         ck_cmp          ifs2    S S<
-eq             numeric eq (==)         ck_null         Iifs2   S S<
-i_eq           integer eq (==)         ck_null         ifs2    S S<
-ne             numeric ne (!=)         ck_null         Iifs2   S S<
-i_ne           integer ne (!=)         ck_null         ifs2    S S<
+eq             numeric eq (==)         ck_cmp          Iifs2   S S<
+i_eq           integer eq (==)         ck_cmp          ifs2    S S<
+ne             numeric ne (!=)         ck_cmp          Iifs2   S S<
+i_ne           integer ne (!=)         ck_cmp          ifs2    S S<
 ncmp           numeric comparison (<=>)        ck_null         Iifst2  S S<
-i_ncmp         integer comparison (<=>)        ck_null         ifsT2   S S<
+i_ncmp         integer comparison (<=>)        ck_null         ifst2   S S<
 
 slt            string lt               ck_null         ifs2    S S
 sgt            string gt               ck_null         ifs2    S S
@@ -160,22 +158,22 @@ sle               string le               ck_null         ifs2    S S
 sge            string ge               ck_null         ifs2    S S
 seq            string eq               ck_null         ifs2    S S
 sne            string ne               ck_null         ifs2    S S
-scmp           string comparison (cmp) ck_null         ifsT2   S S
+scmp           string comparison (cmp) ck_null         ifst2   S S
 
 bit_and                bitwise and (&)         ck_bitop        fst2    S S|
 bit_xor                bitwise xor (^)         ck_bitop        fst2    S S|
 bit_or         bitwise or (|)          ck_bitop        fst2    S S|
-nbit_and       numeric bitiwse and (&) ck_bitop        fsT2    S S|
+nbit_and       numeric bitwise and (&) ck_bitop        fsT2    S S|
 nbit_xor       numeric bitwise xor (^) ck_bitop        fsT2    S S|
 nbit_or                numeric bitwise or (|)  ck_bitop        fsT2    S S|
-sbit_and       string bitiwse and (&)  ck_bitop        fst2    S S|
-sbit_xor       string bitwise xor (^ ck_bitop        fst2    S S|
-sbit_or                string bitwise or (|  ck_bitop        fst2    S S|
+sbit_and       string bitwise and (&.) ck_bitop        fst2    S S|
+sbit_xor       string bitwise xor (^.) ck_bitop        fst2    S S|
+sbit_or                string bitwise or (|.)  ck_bitop        fst2    S S|
 
 negate         negation (-)            ck_null         Ifst1   S
 i_negate       integer negation (-)    ck_null         ifst1   S
 not            not                     ck_null         ifs1    S
-complement     1's complement (~)      ck_bitop        fsT1    S
+complement     1's complement (~)      ck_bitop        fst1    S
 ncomplement    numeric 1's complement (~)      ck_bitop        fsT1    S
 scomplement    string 1's complement (~)       ck_null fsT1    S
 
@@ -203,7 +201,7 @@ abs         abs                     ck_fun          fsTu%   S?
 
 length         length                  ck_length       ifsTu%  S?
 substr         substr                  ck_substr       st@     S S S? S?
-vec            vec                     ck_fun          isT@    S S S
+vec            vec                     ck_fun          ist@    S S S
 
 index          index                   ck_index        isT@    S S S?
 rindex         rindex                  ck_index        isT@    S S S?
@@ -229,8 +227,8 @@ aslice              array slice             ck_null         m@      A L
 kvaslice       index/value array slice ck_null         m@      A L
 
 aeach          each on array           ck_each         d%      A
-akeys          keys on array           ck_each         t%      A
 avalues                values on array         ck_each         dt%     A
+akeys          keys on array           ck_each         t%      A
 
 # Hashes.
 
@@ -239,7 +237,7 @@ values              values                  ck_each         dt%     H
 keys           keys                    ck_each         t%      H
 delete         delete                  ck_delete       %       S
 exists         exists                  ck_exists       is%     S
-rv2hv          hash dereference        ck_rvconst      d     
+rv2hv          hash dereference        ck_rvconst      dt1     
 helem          hash element            ck_null         s2      H S
 hslice         hash slice              ck_null         m@      H L
 kvhslice       key/value hash slice    ck_null         m@      H L
@@ -252,7 +250,7 @@ multideref  array or hash lookup    ck_null         ds+
 
 unpack         unpack                  ck_fun          u@      S S?
 pack           pack                    ck_fun          fmst@   S L
-split          split                   ck_split        T@      S S S
+split          split                   ck_split        t/      S S S
 join           join or string          ck_join         fmst@   S L
 
 # List operators.
@@ -293,10 +291,12 @@ andassign logical and assignment (&&=)    ck_null         s|
 orassign       logical or assignment (||=)     ck_null         s|      
 dorassign      defined or assignment (//=)     ck_null         s|
 
-method         method lookup           ck_method       d.
 entersub       subroutine entry        ck_subr         dm1     L
 leavesub       subroutine exit         ck_null         1       
 leavesublv     lvalue subroutine return        ck_null         1       
+argcheck       check subroutine arguments      ck_null         +
+argelem                subroutine argument     ck_null         +
+argdefelem     subroutine argument default value       ck_null         |
 caller         caller                  ck_fun          t%      S?
 warn           warn                    ck_fun          imst@   L
 die            die                     ck_fun          imst@   L
@@ -320,6 +320,7 @@ redo                redo                    ck_null         s}
 dump           dump                    ck_null         ds}     
 goto           goto                    ck_null         s}      
 exit           exit                    ck_fun          s%      S?
+method         method lookup           ck_method       d.
 method_named   method with known name  ck_null         d.
 method_super   super with known name   ck_null         d.
 method_redir   redirect method with known name ck_null d.
@@ -396,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?
@@ -552,13 +554,9 @@ once               once                    ck_null         |
 
 custom         unknown custom operator         ck_null         0
 
-# For smart dereference for each/keys/values
-reach          each on reference       ck_each         d%      S
-rkeys          keys on reference                       ck_each         t%      S
-rvalues                values on reference     ck_each         dt%     S
-
 # For CORE:: subs
 coreargs       CORE:: subroutine       ck_null         $       
+avhvswitch     Array/hash switch       ck_null         t1
 
 runcv          __SUB__                 ck_null         s0
 
@@ -574,3 +572,8 @@ 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