This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add OP_IS_INFIX_BIT
[perl5.git] / regen / opcodes
index c541d27..cbf38dc 100644 (file)
@@ -14,6 +14,7 @@
 # padop/svop  - $            padop    - # (unused)   loop       - {
 # baseop/unop - %            loopexop - }            filestatop - -
 # pvop/svop   - "            cop      - ;            methop     - .
+# unop_aux    - +
 
 # Other options are:
 #   needs stack mark                    - m  (OA_MARK)
@@ -30,7 +31,7 @@
 # scalar      - S            list     - L            array     - A
 # hash        - H            sub (CV) - C            file      - F
 # socket      - Fs           filetest - F-           filetest_access - F-+
-# num-compare - S<           dirhandle - DF
+# num-compare - S<           dirhandle - DF          infix bitwise   - S|
 
 # reference - R
 # "?" denotes an optional operand.
@@ -50,7 +51,7 @@ const         constant item           ck_svconst      s$
 
 gvsv           scalar variable         ck_null         ds$     
 gv             glob value              ck_null         ds$     
-gelem          glob elem               ck_null         d     S S
+gelem          glob elem               ck_null         ds2     S S
 padsv          private variable        ck_null         ds0
 padav          private array           ck_null         d0
 padhv          private hash            ck_null         d0
@@ -65,7 +66,7 @@ rv2sv         scalar dereference      ck_rvconst      ds1
 av2arylen      array length            ck_null         is1     
 rv2cv          subroutine dereference  ck_rvconst      d1
 anoncode       anonymous subroutine    ck_anoncode     s$      
-prototype      subroutine prototype    ck_null         s%      S
+prototype      subroutine prototype    ck_prototype    su%     S?
 refgen         reference constructor   ck_spair        m1      L
 srefgen                single ref constructor  ck_null         fs1     S
 ref            reference-type operator ck_fun          stu%    S?
@@ -111,10 +112,10 @@ preinc            preincrement (++)               ck_lfun         dIs1    S
 i_preinc       integer preincrement (++)       ck_lfun         dis1    S
 predec         predecrement (--)               ck_lfun         dIs1    S
 i_predec       integer predecrement (--)       ck_lfun         dis1    S
-postinc                postincrement (++)              ck_lfun         IsT1    S
-i_postinc      integer postincrement (++)      ck_lfun         isT1    S
-postdec                postdecrement (--)              ck_lfun         IsT1    S
-i_postdec      integer postdecrement (--)      ck_lfun         isT1    S
+postinc                postincrement (++)              ck_lfun         Ist1    S
+i_postinc      integer postincrement (++)      ck_lfun         ist1    S
+postdec                postdecrement (--)              ck_lfun         Ist1    S
+i_postdec      integer postdecrement (--)      ck_lfun         ist1    S
 
 # Ordinary operators.
 
@@ -151,7 +152,7 @@ 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<
 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
@@ -159,16 +160,24 @@ 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
-
-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
+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_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|
 
 negate         negation (-)            ck_null         Ifst1   S
-i_negate       integer 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
 
 smartmatch     smart match             ck_smartmatch   s2
 
@@ -219,14 +228,14 @@ aelem             array element           ck_null         s2      A S
 aslice         array slice             ck_null         m@      A L
 kvaslice       index/value array slice ck_null         m@      A L
 
-aeach          each on array           ck_each               A
+aeach          each on array           ck_each         d%      A
 akeys          keys on array           ck_each         t%      A
-avalues                values on array         ck_each         t%      A
+avalues                values on array         ck_each         dt%     A
 
 # Hashes.
 
-each           each                    ck_each               H
-values         values                  ck_each         t%      H
+each           each                    ck_each         d%      H
+values         values                  ck_each         dt%     H
 keys           keys                    ck_each         t%      H
 delete         delete                  ck_delete       %       S
 exists         exists                  ck_exists       is%     S
@@ -235,6 +244,10 @@ 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
 
+# mixed array and hash access
+
+multideref     array or hash lookup    ck_null         ds+     
+
 # Explosives and implosives.
 
 unpack         unpack                  ck_fun          u@      S S?
@@ -246,7 +259,7 @@ join                join or string          ck_join         fmst@   S L
 
 list           list                    ck_null         m@      L
 lslice         list slice              ck_null         2       H L L
-anonlist       anonymous list ([])     ck_fun          ms@     L
+anonlist       anonymous array ([])    ck_fun          ms@     L
 anonhash       anonymous hash ({})     ck_fun          ms@     L
 
 splice         splice                  ck_fun          m@      A S? S? L
@@ -281,7 +294,7 @@ 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         dmt1    L
+entersub       subroutine entry        ck_subr         dm    L
 leavesub       subroutine exit         ck_null         1       
 leavesublv     lvalue subroutine return        ck_null         1       
 caller         caller                  ck_fun          t%      S?
@@ -308,6 +321,9 @@ dump                dump                    ck_null         ds}
 goto           goto                    ck_null         s}      
 exit           exit                    ck_fun          s%      S?
 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.
+method_redir_super     redirect super method with known name   ck_null d.
 
 entergiven     given()                 ck_null         d|
 leavegiven     leave given block       ck_null         1
@@ -442,8 +458,8 @@ fork                fork                    ck_null         ist0
 wait           wait                    ck_null         isT0    
 waitpid                waitpid                 ck_fun          isT@    S S
 system         system                  ck_exec         imsT@   S? L
-exec           exec                    ck_exec         dimsT@  S? L
-kill           kill                    ck_fun          dimsT@  L
+exec           exec                    ck_exec         imsT@   S? L
+kill           kill                    ck_fun          imsT@   L
 getppid                getppid                 ck_null         isT0    
 getpgrp                getpgrp                 ck_fun          isT%    S?
 setpgrp                setpgrp                 ck_fun          isT@    S? S?
@@ -481,7 +497,7 @@ semctl              semctl                  ck_fun          imst@   S S S S
 
 # Eval.
 
-require                require                 ck_require      du%     S?
+require                require                 ck_require      dsu%    S?
 dofile         do "file"               ck_fun          d1      S
 hintseval      eval hints              ck_svconst      s$
 entereval      eval "string"           ck_eval         du%     S?
@@ -537,9 +553,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         %       S
+reach          each on reference       ck_each         d%      S
 rkeys          keys on reference                       ck_each         t%      S
-rvalues                values on reference                     ck_each         t%      S
+rvalues                values on reference     ck_each         dt%     S
 
 # For CORE:: subs
 coreargs       CORE:: subroutine       ck_null         $       
@@ -553,7 +569,8 @@ padcv               private subroutine      ck_null         d0
 introcv                private subroutine      ck_null         d0
 clonecv                private subroutine      ck_null         d0
 padrange       list of private variables       ck_null         d0
-refassign      lvalue ref assignment   ck_refassign    d2
+refassign      lvalue ref assignment   ck_refassign    ds2
 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