X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/b31e13ff8bcc3b886cde8ce66380fc1032eaf4f9..6985230a6e9dafc0b356186a2513961407efe2da:/regen/opcodes diff --git a/regen/opcodes b/regen/opcodes index 7c02e92..57dd363 100644 --- a/regen/opcodes +++ b/regen/opcodes @@ -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 d2 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. @@ -126,7 +127,7 @@ 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 @@ -161,14 +162,24 @@ 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 +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 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 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 +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 smartmatch smart match ck_smartmatch s2 @@ -194,7 +205,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? @@ -219,14 +230,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 +avalues values on array ck_each dt% A akeys keys on array ck_each t% A -avalues values on array ck_each t% 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,18 +246,22 @@ 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? 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. 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,9 +296,12 @@ 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 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 @@ -306,8 +324,11 @@ next next ck_null s} redo redo ck_null s} dump dump ck_null ds} goto goto ck_null s} -exit exit ck_fun ds% 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 @@ -328,7 +349,7 @@ binmode binmode ck_fun s@ F S? tie tie ck_fun idms@ R S L untie untie ck_fun is% R -tied tied ck_fun s% R +tied tied ck_fun ds% R dbmopen dbmopen ck_fun is@ H S S dbmclose dbmclose ck_fun is% H @@ -337,7 +358,7 @@ select select ck_select st@ F? getc getc ck_eof st% F? read read ck_fun imst@ F R S S? -enterwrite write ck_fun dis% F? +enterwrite write ck_fun is% F? leavewrite write exit ck_null 1 prtf printf ck_listiob ims@ F? L @@ -442,8 +463,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 +502,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? @@ -536,13 +557,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 -rkeys keys on reference ck_each t% S -rvalues values on reference ck_each t% S - # For CORE:: subs coreargs CORE:: subroutine ck_null $ +avhvswitch Array/hash switch ck_null t1 runcv __SUB__ ck_null s0 @@ -553,7 +570,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