X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=opcode.pl;h=0dfb9e742dd411c14e7307637f1b2ae0410d266b;hb=3cb0bbe5af1ac1b0e46bbee66b7b457629e7ffa3;hp=0b91f3c752c8bd4a3753960d17cafd1a1e325e44;hpb=2b260de0f3727bc62519897f69d6f752c97d8502;p=p5sagit%2Fp5-mst-13.2.git diff --git a/opcode.pl b/opcode.pl index 0b91f3c..0dfb9e7 100755 --- a/opcode.pl +++ b/opcode.pl @@ -183,8 +183,8 @@ END '|', 3, # logop '@', 4, # listop '/', 5, # pmop - '$', 6, # svop - '*', 7, # gvop + '$', 6, # svop_or_padop + '#', 7, # padop '"', 8, # pvop_or_svop '{', 9, # loop ';', 10, # cop @@ -298,6 +298,7 @@ sub tab { # ref not OK (RETPUSHNO) # trans not OK (dTARG; TARG = sv_newmortal();) # ucfirst etc not OK: TMP arg processed inplace +# quotemeta not OK (unsafe when TARG == arg) # each repeat not OK too due to array context # pack split - unknown whether they are safe # sprintf: is calling do_sprintf(TARG,...) which can act on TARG @@ -314,6 +315,7 @@ sub tab { # readline - unknown whether it is safe # match subst not OK (dTARG) # grepwhile not OK (not always setting) +# join not OK (unsafe when TARG == arg) # Suspicious wrt "additional mode of failure": concat (dealt with # in ck_sassign()), join (same). @@ -350,8 +352,8 @@ wantarray wantarray ck_null is0 const constant item ck_svconst s$ -gvsv scalar variable ck_null ds* -gv glob value ck_null ds* +gvsv scalar variable ck_null ds$ +gv glob value ck_null ds$ gelem glob elem ck_null d2 S S padsv private variable ck_null ds0 padav private array ck_null d0 @@ -363,9 +365,9 @@ pushre push regexp ck_null d/ # References and stuff. rv2gv ref-to-glob cast ck_rvconst ds1 -rv2sv scalar deref ck_rvconst ds1 +rv2sv scalar dereference ck_rvconst ds1 av2arylen array length ck_null is1 -rv2cv subroutine deref ck_rvconst d1 +rv2cv subroutine dereference ck_rvconst d1 anoncode anonymous subroutine ck_anoncode $ prototype subroutine prototype ck_null s% S refgen reference constructor ck_spair m1 L @@ -506,12 +508,12 @@ ucfirst ucfirst ck_fun_locale fstu% S? lcfirst lcfirst ck_fun_locale fstu% S? uc uc ck_fun_locale fstu% S? lc lc ck_fun_locale fstu% S? -quotemeta quotemeta ck_fun fsTu% S? +quotemeta quotemeta ck_fun fstu% S? # Arrays. rv2av array dereference ck_rvconst dt1 -aelemfast constant array element ck_null s* A S +aelemfast constant array element ck_null s$ A S aelem array element ck_null s2 A S aslice array slice ck_null m@ A L @@ -531,7 +533,7 @@ hslice hash slice ck_null m@ H L unpack unpack ck_fun @ S S pack pack ck_fun mst@ S L split split ck_split t@ S S S -join join ck_join msT@ S L +join join ck_join mst@ S L # List operators. @@ -735,6 +737,10 @@ setpriority setpriority ck_fun isT@ S S S # Time calls. +# NOTE: MacOS patches the 'i' of time() away later when the interpreter +# is created because in MacOS time() is already returning times > 2**31-1, +# that is, non-integers. + time time ck_null isT0 tms times ck_null 0 localtime localtime ck_fun t% S?