X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/af9e49b40a4cc2d6c0d5ebad7e84fb62143b24e1..448670305e91e35ff5a396a7d764ec8b1844012e:/opcode.h diff --git a/opcode.h b/opcode.h index e38508e..0c5eb30 100644 --- a/opcode.h +++ b/opcode.h @@ -2,8 +2,8 @@ * * opcode.h * - * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, 2004, 2005 by Larry Wall and others + * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, + * 2001, 2002, 2003, 2004, 2005, 2006, 2007 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -276,23 +276,23 @@ EXTCONST char* const PL_op_name[] = { "ftewrite", "fteexec", "ftis", - "fteowned", - "ftrowned", - "ftzero", "ftsize", "ftmtime", "ftatime", "ftctime", + "ftrowned", + "fteowned", + "ftzero", "ftsock", "ftchr", "ftblk", "ftfile", "ftdir", "ftpipe", - "ftlink", "ftsuid", "ftsgid", "ftsvtx", + "ftlink", "fttty", "fttext", "ftbinary", @@ -339,9 +339,9 @@ EXTCONST char* const PL_op_name[] = { "msgctl", "msgsnd", "msgrcv", + "semop", "semget", "semctl", - "semop", "require", "dofile", "entereval", @@ -381,11 +381,18 @@ EXTCONST char* const PL_op_name[] = { "getlogin", "syscall", "lock", - "threadsv", "setstate", "method_named", "dor", "dorassign", + "entergiven", + "leavegiven", + "enterwhen", + "leavewhen", + "break", + "continue", + "smartmatch", + "say", "custom", }; #endif @@ -637,23 +644,23 @@ EXTCONST char* const PL_op_desc[] = { "-w", "-x", "-e", - "-o", - "-O", - "-z", "-s", "-M", "-A", "-C", + "-O", + "-o", + "-z", "-S", "-c", "-b", "-f", "-d", "-p", - "-l", "-u", "-g", "-k", + "-l", "-t", "-T", "-B", @@ -700,9 +707,9 @@ EXTCONST char* const PL_op_desc[] = { "msgctl", "msgsnd", "msgrcv", + "semop", "semget", "semctl", - "semop", "require", "do \"file\"", "eval \"string\"", @@ -742,11 +749,18 @@ EXTCONST char* const PL_op_desc[] = { "getlogin", "syscall", "lock", - "per-thread value", "set statement info", "method with known name", "defined or (//)", "defined or assignment (//=)", + "given()", + "leave given block", + "when()", + "leave when block", + "break", + "continue", + "smart match", + "say", "unknown custom operator", }; #endif @@ -758,13 +772,16 @@ END_EXTERN_C START_EXTERN_C #ifdef PERL_GLOBAL_STRUCT_INIT +# define PERL_PPADDR_INITED static const Perl_ppaddr_t Gppaddr[] #else # ifndef PERL_GLOBAL_STRUCT +# define PERL_PPADDR_INITED EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ # endif #endif /* PERL_GLOBAL_STRUCT */ #if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT) +# define PERL_PPADDR_INITED = { MEMBER_TO_FPTR(Perl_pp_null), MEMBER_TO_FPTR(Perl_pp_stub), @@ -850,15 +867,15 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_i_ne), MEMBER_TO_FPTR(Perl_pp_ncmp), MEMBER_TO_FPTR(Perl_pp_i_ncmp), - MEMBER_TO_FPTR(Perl_pp_slt), - MEMBER_TO_FPTR(Perl_pp_sgt), + MEMBER_TO_FPTR(Perl_pp_sle), /* Perl_pp_slt */ + MEMBER_TO_FPTR(Perl_pp_sle), /* Perl_pp_sgt */ MEMBER_TO_FPTR(Perl_pp_sle), - MEMBER_TO_FPTR(Perl_pp_sge), + MEMBER_TO_FPTR(Perl_pp_sle), /* Perl_pp_sge */ MEMBER_TO_FPTR(Perl_pp_seq), MEMBER_TO_FPTR(Perl_pp_sne), MEMBER_TO_FPTR(Perl_pp_scmp), MEMBER_TO_FPTR(Perl_pp_bit_and), - MEMBER_TO_FPTR(Perl_pp_bit_xor), + MEMBER_TO_FPTR(Perl_pp_bit_or), /* Perl_pp_bit_xor */ MEMBER_TO_FPTR(Perl_pp_bit_or), MEMBER_TO_FPTR(Perl_pp_negate), MEMBER_TO_FPTR(Perl_pp_i_negate), @@ -866,28 +883,28 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_complement), MEMBER_TO_FPTR(Perl_pp_atan2), MEMBER_TO_FPTR(Perl_pp_sin), - MEMBER_TO_FPTR(Perl_pp_cos), + MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_cos */ MEMBER_TO_FPTR(Perl_pp_rand), MEMBER_TO_FPTR(Perl_pp_srand), - MEMBER_TO_FPTR(Perl_pp_exp), - MEMBER_TO_FPTR(Perl_pp_log), - MEMBER_TO_FPTR(Perl_pp_sqrt), + MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_exp */ + MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_log */ + MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_sqrt */ MEMBER_TO_FPTR(Perl_pp_int), - MEMBER_TO_FPTR(Perl_pp_hex), + MEMBER_TO_FPTR(Perl_pp_oct), /* Perl_pp_hex */ MEMBER_TO_FPTR(Perl_pp_oct), MEMBER_TO_FPTR(Perl_pp_abs), MEMBER_TO_FPTR(Perl_pp_length), MEMBER_TO_FPTR(Perl_pp_substr), MEMBER_TO_FPTR(Perl_pp_vec), MEMBER_TO_FPTR(Perl_pp_index), - MEMBER_TO_FPTR(Perl_pp_rindex), + MEMBER_TO_FPTR(Perl_pp_index), /* Perl_pp_rindex */ MEMBER_TO_FPTR(Perl_pp_sprintf), MEMBER_TO_FPTR(Perl_pp_formline), MEMBER_TO_FPTR(Perl_pp_ord), MEMBER_TO_FPTR(Perl_pp_chr), MEMBER_TO_FPTR(Perl_pp_crypt), MEMBER_TO_FPTR(Perl_pp_ucfirst), - MEMBER_TO_FPTR(Perl_pp_lcfirst), + MEMBER_TO_FPTR(Perl_pp_ucfirst), /* Perl_pp_lcfirst */ MEMBER_TO_FPTR(Perl_pp_uc), MEMBER_TO_FPTR(Perl_pp_lc), MEMBER_TO_FPTR(Perl_pp_quotemeta), @@ -900,7 +917,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_do_kv), /* Perl_pp_keys */ MEMBER_TO_FPTR(Perl_pp_delete), MEMBER_TO_FPTR(Perl_pp_exists), - MEMBER_TO_FPTR(Perl_pp_rv2hv), + MEMBER_TO_FPTR(Perl_pp_rv2av), /* Perl_pp_rv2hv */ MEMBER_TO_FPTR(Perl_pp_helem), MEMBER_TO_FPTR(Perl_pp_hslice), MEMBER_TO_FPTR(Perl_pp_unpack), @@ -913,7 +930,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_anonhash), MEMBER_TO_FPTR(Perl_pp_splice), MEMBER_TO_FPTR(Perl_pp_push), - MEMBER_TO_FPTR(Perl_pp_pop), + MEMBER_TO_FPTR(Perl_pp_shift), /* Perl_pp_pop */ MEMBER_TO_FPTR(Perl_pp_shift), MEMBER_TO_FPTR(Perl_pp_unshift), MEMBER_TO_FPTR(Perl_pp_sort), @@ -929,8 +946,8 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_or), MEMBER_TO_FPTR(Perl_pp_xor), MEMBER_TO_FPTR(Perl_pp_cond_expr), - MEMBER_TO_FPTR(Perl_pp_andassign), - MEMBER_TO_FPTR(Perl_pp_orassign), + MEMBER_TO_FPTR(Perl_pp_and), /* Perl_pp_andassign */ + MEMBER_TO_FPTR(Perl_pp_or), /* Perl_pp_orassign */ MEMBER_TO_FPTR(Perl_pp_method), MEMBER_TO_FPTR(Perl_pp_entersub), MEMBER_TO_FPTR(Perl_pp_leavesub), @@ -979,7 +996,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_sysopen), MEMBER_TO_FPTR(Perl_pp_sysseek), MEMBER_TO_FPTR(Perl_pp_sysread), - MEMBER_TO_FPTR(Perl_pp_syswrite), + MEMBER_TO_FPTR(Perl_pp_send), /* Perl_pp_syswrite */ MEMBER_TO_FPTR(Perl_pp_send), MEMBER_TO_FPTR(Perl_pp_sysread), /* Perl_pp_recv */ MEMBER_TO_FPTR(Perl_pp_eof), @@ -1009,23 +1026,23 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_ftewrite */ MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_fteexec */ MEMBER_TO_FPTR(Perl_pp_ftis), - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_fteowned */ - MEMBER_TO_FPTR(Perl_pp_ftrowned), - MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftzero */ MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftsize */ MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftmtime */ MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftatime */ MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftctime */ + MEMBER_TO_FPTR(Perl_pp_ftrowned), + MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_fteowned */ + MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftzero */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsock */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftchr */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftblk */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftfile */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftdir */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftpipe */ - MEMBER_TO_FPTR(Perl_pp_ftlink), MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsuid */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsgid */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsvtx */ + MEMBER_TO_FPTR(Perl_pp_ftlink), MEMBER_TO_FPTR(Perl_pp_fttty), MEMBER_TO_FPTR(Perl_pp_fttext), MEMBER_TO_FPTR(Perl_pp_fttext), /* Perl_pp_ftbinary */ @@ -1070,11 +1087,11 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_shmwrite), MEMBER_TO_FPTR(Perl_pp_semget), /* Perl_pp_msgget */ MEMBER_TO_FPTR(Perl_pp_semctl), /* Perl_pp_msgctl */ - MEMBER_TO_FPTR(Perl_pp_msgsnd), - MEMBER_TO_FPTR(Perl_pp_msgrcv), + MEMBER_TO_FPTR(Perl_pp_shmwrite), /* Perl_pp_msgsnd */ + MEMBER_TO_FPTR(Perl_pp_shmwrite), /* Perl_pp_msgrcv */ + MEMBER_TO_FPTR(Perl_pp_shmwrite), /* Perl_pp_semop */ MEMBER_TO_FPTR(Perl_pp_semget), MEMBER_TO_FPTR(Perl_pp_semctl), - MEMBER_TO_FPTR(Perl_pp_semop), MEMBER_TO_FPTR(Perl_pp_require), MEMBER_TO_FPTR(Perl_pp_require), /* Perl_pp_dofile */ MEMBER_TO_FPTR(Perl_pp_entereval), @@ -1114,23 +1131,35 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_pp_getlogin), MEMBER_TO_FPTR(Perl_pp_syscall), MEMBER_TO_FPTR(Perl_pp_lock), - MEMBER_TO_FPTR(Perl_unimplemented_op), /* Perl_pp_threadsv */ MEMBER_TO_FPTR(Perl_pp_setstate), MEMBER_TO_FPTR(Perl_pp_method_named), - MEMBER_TO_FPTR(Perl_pp_dor), - MEMBER_TO_FPTR(Perl_pp_dorassign), + MEMBER_TO_FPTR(Perl_pp_defined), /* Perl_pp_dor */ + MEMBER_TO_FPTR(Perl_pp_defined), /* Perl_pp_dorassign */ + MEMBER_TO_FPTR(Perl_pp_entergiven), + MEMBER_TO_FPTR(Perl_pp_leavegiven), + MEMBER_TO_FPTR(Perl_pp_enterwhen), + MEMBER_TO_FPTR(Perl_pp_leavewhen), + MEMBER_TO_FPTR(Perl_pp_break), + MEMBER_TO_FPTR(Perl_pp_continue), + MEMBER_TO_FPTR(Perl_pp_smartmatch), + MEMBER_TO_FPTR(Perl_pp_print), /* Perl_pp_say */ } #endif +#ifdef PERL_PPADDR_INITED ; +#endif #ifdef PERL_GLOBAL_STRUCT_INIT +# define PERL_CHECK_INITED static const Perl_check_t Gcheck[] #else # ifndef PERL_GLOBAL_STRUCT +# define PERL_CHECK_INITED EXT Perl_check_t PL_check[] /* or perlvars.h */ # endif #endif #if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT) +# define PERL_CHECK_INITED = { MEMBER_TO_FPTR(Perl_ck_null), /* null */ MEMBER_TO_FPTR(Perl_ck_null), /* stub */ @@ -1375,27 +1404,27 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftewrite */ MEMBER_TO_FPTR(Perl_ck_ftst), /* fteexec */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftis */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* fteowned */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftrowned */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftzero */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsize */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftmtime */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftatime */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftctime */ + MEMBER_TO_FPTR(Perl_ck_ftst), /* ftrowned */ + MEMBER_TO_FPTR(Perl_ck_ftst), /* fteowned */ + MEMBER_TO_FPTR(Perl_ck_ftst), /* ftzero */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsock */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftchr */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftblk */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftfile */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftdir */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftpipe */ - MEMBER_TO_FPTR(Perl_ck_ftst), /* ftlink */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsuid */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsgid */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsvtx */ + MEMBER_TO_FPTR(Perl_ck_ftst), /* ftlink */ MEMBER_TO_FPTR(Perl_ck_ftst), /* fttty */ MEMBER_TO_FPTR(Perl_ck_ftst), /* fttext */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftbinary */ - MEMBER_TO_FPTR(Perl_ck_fun), /* chdir */ + MEMBER_TO_FPTR(Perl_ck_chdir), /* chdir */ MEMBER_TO_FPTR(Perl_ck_fun), /* chown */ MEMBER_TO_FPTR(Perl_ck_fun), /* chroot */ MEMBER_TO_FPTR(Perl_ck_fun), /* unlink */ @@ -1438,9 +1467,9 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_ck_fun), /* msgctl */ MEMBER_TO_FPTR(Perl_ck_fun), /* msgsnd */ MEMBER_TO_FPTR(Perl_ck_fun), /* msgrcv */ + MEMBER_TO_FPTR(Perl_ck_fun), /* semop */ MEMBER_TO_FPTR(Perl_ck_fun), /* semget */ MEMBER_TO_FPTR(Perl_ck_fun), /* semctl */ - MEMBER_TO_FPTR(Perl_ck_fun), /* semop */ MEMBER_TO_FPTR(Perl_ck_require), /* require */ MEMBER_TO_FPTR(Perl_ck_fun), /* dofile */ MEMBER_TO_FPTR(Perl_ck_eval), /* entereval */ @@ -1480,22 +1509,31 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ MEMBER_TO_FPTR(Perl_ck_null), /* getlogin */ MEMBER_TO_FPTR(Perl_ck_fun), /* syscall */ MEMBER_TO_FPTR(Perl_ck_rfun), /* lock */ - MEMBER_TO_FPTR(Perl_ck_null), /* threadsv */ MEMBER_TO_FPTR(Perl_ck_null), /* setstate */ MEMBER_TO_FPTR(Perl_ck_null), /* method_named */ MEMBER_TO_FPTR(Perl_ck_null), /* dor */ MEMBER_TO_FPTR(Perl_ck_null), /* dorassign */ + MEMBER_TO_FPTR(Perl_ck_null), /* entergiven */ + MEMBER_TO_FPTR(Perl_ck_null), /* leavegiven */ + MEMBER_TO_FPTR(Perl_ck_null), /* enterwhen */ + MEMBER_TO_FPTR(Perl_ck_null), /* leavewhen */ + MEMBER_TO_FPTR(Perl_ck_null), /* break */ + MEMBER_TO_FPTR(Perl_ck_null), /* continue */ + MEMBER_TO_FPTR(Perl_ck_smartmatch), /* smartmatch */ + MEMBER_TO_FPTR(Perl_ck_listiob), /* say */ MEMBER_TO_FPTR(Perl_ck_null), /* custom */ } #endif +#ifdef PERL_CHECK_INITED ; +#endif /* #ifdef PERL_CHECK_INITED */ #ifndef PERL_GLOBAL_STRUCT_INIT #ifndef DOINIT -EXT const U32 PL_opargs[]; +EXTCONST U32 PL_opargs[]; #else -EXT const U32 PL_opargs[] = { +EXTCONST U32 PL_opargs[] = { 0x00000000, /* null */ 0x00000000, /* stub */ 0x00003604, /* scalar */ @@ -1520,7 +1558,7 @@ EXT const U32 PL_opargs[] = { 0x00002206, /* srefgen */ 0x0001368c, /* ref */ 0x00122804, /* bless */ - 0x00001608, /* backtick */ + 0x00003608, /* backtick */ 0x00012808, /* glob */ 0x0001d608, /* readline */ 0x00000c08, /* rcatline */ @@ -1611,7 +1649,7 @@ EXT const U32 PL_opargs[] = { 0x0022281c, /* vec */ 0x0122291c, /* index */ 0x0122291c, /* rindex */ - 0x0004280f, /* sprintf */ + 0x0004280d, /* sprintf */ 0x00042805, /* formline */ 0x0001379e, /* ord */ 0x0001378e, /* chr */ @@ -1739,23 +1777,23 @@ EXT const U32 PL_opargs[] = { 0x0000d894, /* ftewrite */ 0x0000d894, /* fteexec */ 0x0000d894, /* ftis */ - 0x0000d894, /* fteowned */ - 0x0000d894, /* ftrowned */ - 0x0000d894, /* ftzero */ 0x0000d89c, /* ftsize */ 0x0000d88c, /* ftmtime */ 0x0000d88c, /* ftatime */ 0x0000d88c, /* ftctime */ + 0x0000d894, /* ftrowned */ + 0x0000d894, /* fteowned */ + 0x0000d894, /* ftzero */ 0x0000d894, /* ftsock */ 0x0000d894, /* ftchr */ 0x0000d894, /* ftblk */ 0x0000d894, /* ftfile */ 0x0000d894, /* ftdir */ 0x0000d894, /* ftpipe */ - 0x0000d894, /* ftlink */ 0x0000d894, /* ftsuid */ 0x0000d894, /* ftsgid */ 0x0000d894, /* ftsvtx */ + 0x0000d894, /* ftlink */ 0x0000d814, /* fttty */ 0x0000d894, /* fttext */ 0x0000d894, /* ftbinary */ @@ -1802,9 +1840,9 @@ EXT const U32 PL_opargs[] = { 0x0022281d, /* msgctl */ 0x0022281d, /* msgsnd */ 0x2222281d, /* msgrcv */ + 0x0002281d, /* semop */ 0x0022281d, /* semget */ 0x0222281d, /* semctl */ - 0x0002281d, /* semop */ 0x000136c0, /* require */ 0x00002240, /* dofile */ 0x00003640, /* entereval */ @@ -1844,11 +1882,18 @@ EXT const U32 PL_opargs[] = { 0x0000000c, /* getlogin */ 0x0004281d, /* syscall */ 0x0000f604, /* lock */ - 0x00000044, /* threadsv */ 0x00001404, /* setstate */ 0x00000c40, /* method_named */ 0x00000600, /* dor */ 0x00000604, /* dorassign */ + 0x00000640, /* entergiven */ + 0x00000200, /* leavegiven */ + 0x00000640, /* enterwhen */ + 0x00000200, /* leavewhen */ + 0x00000000, /* break */ + 0x00000000, /* continue */ + 0x00000404, /* smartmatch */ + 0x0005c815, /* say */ 0x00000000, /* custom */ }; #endif