This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Implement "my $_".
[perl5.git] / opcode.h
index 7ff516b..81ab818 100644 (file)
--- a/opcode.h
+++ b/opcode.h
@@ -1,7 +1,16 @@
-/* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
-   This file is built by opcode.pl from its data.  Any changes made here
-   will be lost!
-*/
+/*
+ *    opcode.h
+ *
+ *    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ *    2000, 2001, 2002, 2003, 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.
+ *
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ *  This file is built by opcode.pl from its data.  Any changes made here
+ *  will be lost!
+ */
 
 #define Perl_pp_i_preinc Perl_pp_preinc
 #define Perl_pp_i_predec Perl_pp_predec
 
 START_EXTERN_C
 
+
+#define OP_NAME(o) ((o)->op_type == OP_CUSTOM ? custom_op_name(o) : \
+                    PL_op_name[(o)->op_type])
+#define OP_DESC(o) ((o)->op_type == OP_CUSTOM ? custom_op_desc(o) : \
+                    PL_op_desc[(o)->op_type])
+
 #ifndef DOINIT
 EXT char *PL_op_name[];
 #else
@@ -366,6 +381,9 @@ EXT char *PL_op_name[] = {
        "threadsv",
        "setstate",
        "method_named",
+       "dor",
+       "dorassign",
+       "custom",
 };
 #endif
 
@@ -439,7 +457,7 @@ EXT char *PL_op_desc[] = {
        "integer addition (+)",
        "subtraction (-)",
        "integer subtraction (-)",
-       "concatenation (.)",
+       "concatenation (.) or string",
        "string",
        "left bitshift (<<)",
        "right bitshift (>>)",
@@ -513,7 +531,7 @@ EXT char *PL_op_desc[] = {
        "unpack",
        "pack",
        "split",
-       "join",
+       "join or string",
        "list",
        "list slice",
        "anonymous list ([])",
@@ -541,7 +559,7 @@ EXT char *PL_op_desc[] = {
        "method lookup",
        "subroutine entry",
        "subroutine exit",
-       "lvalue subroutine exit",
+       "lvalue subroutine return",
        "caller",
        "warn",
        "die",
@@ -724,6 +742,9 @@ EXT char *PL_op_desc[] = {
        "per-thread value",
        "set statement info",
        "method with known name",
+       "defined or (//)",
+       "defined or assignment (//=)",
+       "unknown custom operator",
 };
 #endif
 
@@ -1087,6 +1108,8 @@ EXT OP * (CPERLscope(*PL_ppaddr)[])(pTHX) = {
        MEMBER_TO_FPTR(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),
 };
 #endif
 
@@ -1127,9 +1150,9 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_null),   /* regcomp */
        MEMBER_TO_FPTR(Perl_ck_match),  /* match */
        MEMBER_TO_FPTR(Perl_ck_match),  /* qr */
-       MEMBER_TO_FPTR(Perl_ck_null),   /* subst */
+       MEMBER_TO_FPTR(Perl_ck_match),  /* subst */
        MEMBER_TO_FPTR(Perl_ck_null),   /* substcont */
-       MEMBER_TO_FPTR(Perl_ck_null),   /* trans */
+       MEMBER_TO_FPTR(Perl_ck_match),  /* trans */
        MEMBER_TO_FPTR(Perl_ck_sassign),        /* sassign */
        MEMBER_TO_FPTR(Perl_ck_null),   /* aassign */
        MEMBER_TO_FPTR(Perl_ck_spair),  /* chop */
@@ -1178,13 +1201,13 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_null),   /* i_ne */
        MEMBER_TO_FPTR(Perl_ck_null),   /* ncmp */
        MEMBER_TO_FPTR(Perl_ck_null),   /* i_ncmp */
-       MEMBER_TO_FPTR(Perl_ck_scmp),   /* slt */
-       MEMBER_TO_FPTR(Perl_ck_scmp),   /* sgt */
-       MEMBER_TO_FPTR(Perl_ck_scmp),   /* sle */
-       MEMBER_TO_FPTR(Perl_ck_scmp),   /* sge */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* slt */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* sgt */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* sle */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* sge */
        MEMBER_TO_FPTR(Perl_ck_null),   /* seq */
        MEMBER_TO_FPTR(Perl_ck_null),   /* sne */
-       MEMBER_TO_FPTR(Perl_ck_scmp),   /* scmp */
+       MEMBER_TO_FPTR(Perl_ck_null),   /* scmp */
        MEMBER_TO_FPTR(Perl_ck_bitop),  /* bit_and */
        MEMBER_TO_FPTR(Perl_ck_bitop),  /* bit_xor */
        MEMBER_TO_FPTR(Perl_ck_bitop),  /* bit_or */
@@ -1205,19 +1228,19 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_fun),    /* oct */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* abs */
        MEMBER_TO_FPTR(Perl_ck_lengthconst),    /* length */
-       MEMBER_TO_FPTR(Perl_ck_fun),    /* substr */
+       MEMBER_TO_FPTR(Perl_ck_substr), /* substr */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* vec */
        MEMBER_TO_FPTR(Perl_ck_index),  /* index */
        MEMBER_TO_FPTR(Perl_ck_index),  /* rindex */
-       MEMBER_TO_FPTR(Perl_ck_fun_locale),     /* sprintf */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* sprintf */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* formline */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* ord */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* chr */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* crypt */
-       MEMBER_TO_FPTR(Perl_ck_fun_locale),     /* ucfirst */
-       MEMBER_TO_FPTR(Perl_ck_fun_locale),     /* lcfirst */
-       MEMBER_TO_FPTR(Perl_ck_fun_locale),     /* uc */
-       MEMBER_TO_FPTR(Perl_ck_fun_locale),     /* lc */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* ucfirst */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* lcfirst */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* uc */
+       MEMBER_TO_FPTR(Perl_ck_fun),    /* lc */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* quotemeta */
        MEMBER_TO_FPTR(Perl_ck_rvconst),        /* rv2av */
        MEMBER_TO_FPTR(Perl_ck_null),   /* aelemfast */
@@ -1231,7 +1254,7 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_rvconst),        /* rv2hv */
        MEMBER_TO_FPTR(Perl_ck_null),   /* helem */
        MEMBER_TO_FPTR(Perl_ck_null),   /* hslice */
-       MEMBER_TO_FPTR(Perl_ck_fun),    /* unpack */
+       MEMBER_TO_FPTR(Perl_ck_unpack), /* unpack */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* pack */
        MEMBER_TO_FPTR(Perl_ck_split),  /* split */
        MEMBER_TO_FPTR(Perl_ck_join),   /* join */
@@ -1265,7 +1288,7 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_null),   /* leavesublv */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* caller */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* warn */
-       MEMBER_TO_FPTR(Perl_ck_fun),    /* die */
+       MEMBER_TO_FPTR(Perl_ck_die),    /* die */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* reset */
        MEMBER_TO_FPTR(Perl_ck_null),   /* lineseq */
        MEMBER_TO_FPTR(Perl_ck_null),   /* nextstate */
@@ -1278,13 +1301,13 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        MEMBER_TO_FPTR(Perl_ck_null),   /* iter */
        MEMBER_TO_FPTR(Perl_ck_null),   /* enterloop */
        MEMBER_TO_FPTR(Perl_ck_null),   /* leaveloop */
-       MEMBER_TO_FPTR(Perl_ck_null),   /* return */
+       MEMBER_TO_FPTR(Perl_ck_return), /* return */
        MEMBER_TO_FPTR(Perl_ck_null),   /* last */
        MEMBER_TO_FPTR(Perl_ck_null),   /* next */
        MEMBER_TO_FPTR(Perl_ck_null),   /* redo */
        MEMBER_TO_FPTR(Perl_ck_null),   /* dump */
        MEMBER_TO_FPTR(Perl_ck_null),   /* goto */
-       MEMBER_TO_FPTR(Perl_ck_fun),    /* exit */
+       MEMBER_TO_FPTR(Perl_ck_exit),   /* exit */
        MEMBER_TO_FPTR(Perl_ck_open),   /* open */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* close */
        MEMBER_TO_FPTR(Perl_ck_fun),    /* pipe_op */
@@ -1445,6 +1468,9 @@ EXT OP * (CPERLscope(*PL_check)[]) (pTHX_ OP *op) = {
        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),   /* custom */
 };
 #endif
 
@@ -1478,8 +1504,8 @@ EXT U32 PL_opargs[] = {
        0x00122804,     /* bless */
        0x00001608,     /* backtick */
        0x00012808,     /* glob */
-       0x00001608,     /* readline */
-       0x00001608,     /* rcatline */
+       0x0001d608,     /* readline */
+       0x00000c08,     /* rcatline */
        0x00002204,     /* regcmaybe */
        0x00002204,     /* regcreset */
        0x00002604,     /* regcomp */
@@ -1589,7 +1615,7 @@ EXT U32 PL_opargs[] = {
        0x00000248,     /* rv2hv */
        0x00028404,     /* helem */
        0x00048801,     /* hslice */
-       0x00022800,     /* unpack */
+       0x00122800,     /* unpack */
        0x0004280d,     /* pack */
        0x00222808,     /* split */
        0x0004280d,     /* join */
@@ -1599,8 +1625,8 @@ EXT U32 PL_opargs[] = {
        0x00004805,     /* anonhash */
        0x05326801,     /* splice */
        0x0004691d,     /* push */
-       0x00007604,     /* pop */
-       0x00007604,     /* shift */
+       0x00017604,     /* pop */
+       0x00017604,     /* shift */
        0x0004691d,     /* unshift */
        0x0005a801,     /* sort */
        0x00004809,     /* reverse */
@@ -1643,7 +1669,7 @@ EXT U32 PL_opargs[] = {
        0x00001a44,     /* dump */
        0x00001a44,     /* goto */
        0x00013644,     /* exit */
-       0x0052c81c,     /* open */
+       0x0052c81d,     /* open */
        0x0001d614,     /* close */
        0x000cc814,     /* pipe_op */
        0x0000d61c,     /* fileno */
@@ -1799,10 +1825,13 @@ EXT U32 PL_opargs[] = {
        0x00000014,     /* egrent */
        0x0000000c,     /* getlogin */
        0x0004281d,     /* syscall */
-       0x00003604,     /* lock */
+       0x0000f604,     /* lock */
        0x00000044,     /* threadsv */
        0x00001404,     /* setstate */
        0x00000c40,     /* method_named */
+       0x00000600,     /* dor */
+       0x00000604,     /* dorassign */
+       0x00000000,     /* custom */
 };
 #endif