X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=op.h;h=c6938c9a2365f93208e74f15efbccee6a0beebd5;hb=d790c045735c0bdbf37ccd2827e8fc572aaeae88;hp=8c6f336ca2a34ff2a22479d7b5db12ee08485929;hpb=b162f9ead0a98db35cdcfc8c889e344c040c8d8e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/op.h b/op.h index 8c6f336..c6938c9 100644 --- a/op.h +++ b/op.h @@ -92,7 +92,7 @@ typedef U32 PADOFFSET; : dowantarray()) /* Private for lvalues */ -#define OPpLVAL_INTRO 128 /* Lvalue must be localized */ +#define OPpLVAL_INTRO 128 /* Lvalue must be localized or lvalue sub */ /* Private for OP_AASSIGN */ #define OPpASSIGN_COMMON 64 /* Left & right have syms in common. */ @@ -117,16 +117,20 @@ typedef U32 PADOFFSET; /* Private for OP_REPEAT */ #define OPpREPEAT_DOLIST 64 /* List replication. */ -/* Private for OP_ENTERSUB, OP_RV2?V, OP_?ELEM */ +/* Private for OP_RV2?V, OP_?ELEM */ #define OPpDEREF (32|64) /* Want ref to something: */ #define OPpDEREF_AV 32 /* Want ref to AV. */ #define OPpDEREF_HV 64 /* Want ref to HV. */ #define OPpDEREF_SV (32|64) /* Want ref to SV. */ /* OP_ENTERSUB only */ #define OPpENTERSUB_DB 16 /* Debug subroutine. */ +#define OPpENTERSUB_HASTARG 32 /* Called from OP tree. */ /* OP_RV2CV only */ #define OPpENTERSUB_AMPER 8 /* Used & form to call. */ #define OPpENTERSUB_NOPAREN 128 /* bare sub call (without parens) */ +#define OPpENTERSUB_INARGS 4 /* Lval used as arg to a sub. */ + /* OP_GV only */ +#define OPpEARLY_CV 32 /* foo() called before sub foo was parsed */ /* OP_?ELEM only */ #define OPpLVAL_DEFER 16 /* Defer creation of array/hash elem */ /* for OP_RV2?V, lower bits carry hints */ @@ -182,13 +186,6 @@ struct logop { OP * op_other; }; -struct condop { - BASEOP - OP * op_first; - OP * op_true; - OP * op_false; -}; - struct listop { BASEOP OP * op_first; @@ -262,7 +259,6 @@ struct loop { #define cBINOP ((BINOP*)PL_op) #define cLISTOP ((LISTOP*)PL_op) #define cLOGOP ((LOGOP*)PL_op) -#define cCONDOP ((CONDOP*)PL_op) #define cPMOP ((PMOP*)PL_op) #define cSVOP ((SVOP*)PL_op) #define cGVOP ((GVOP*)PL_op) @@ -274,7 +270,6 @@ struct loop { #define cBINOPo ((BINOP*)o) #define cLISTOPo ((LISTOP*)o) #define cLOGOPo ((LOGOP*)o) -#define cCONDOPo ((CONDOP*)o) #define cPMOPo ((PMOP*)o) #define cSVOPo ((SVOP*)o) #define cGVOPo ((GVOP*)o) @@ -287,7 +282,6 @@ struct loop { #define kBINOP ((BINOP*)kid) #define kLISTOP ((LISTOP*)kid) #define kLOGOP ((LOGOP*)kid) -#define kCONDOP ((CONDOP*)kid) #define kPMOP ((PMOP*)kid) #define kSVOP ((SVOP*)kid) #define kGVOP ((GVOP*)kid) @@ -317,17 +311,16 @@ struct loop { #define OA_UNOP (1 << OCSHIFT) #define OA_BINOP (2 << OCSHIFT) #define OA_LOGOP (3 << OCSHIFT) -#define OA_CONDOP (4 << OCSHIFT) -#define OA_LISTOP (5 << OCSHIFT) -#define OA_PMOP (6 << OCSHIFT) -#define OA_SVOP (7 << OCSHIFT) -#define OA_GVOP (8 << OCSHIFT) -#define OA_PVOP_OR_SVOP (9 << OCSHIFT) -#define OA_LOOP (10 << OCSHIFT) -#define OA_COP (11 << OCSHIFT) -#define OA_BASEOP_OR_UNOP (12 << OCSHIFT) -#define OA_FILESTATOP (13 << OCSHIFT) -#define OA_LOOPEXOP (14 << OCSHIFT) +#define OA_LISTOP (4 << OCSHIFT) +#define OA_PMOP (5 << OCSHIFT) +#define OA_SVOP (6 << OCSHIFT) +#define OA_GVOP (7 << OCSHIFT) +#define OA_PVOP_OR_SVOP (8 << OCSHIFT) +#define OA_LOOP (9 << OCSHIFT) +#define OA_COP (10 << OCSHIFT) +#define OA_BASEOP_OR_UNOP (11 << OCSHIFT) +#define OA_FILESTATOP (12 << OCSHIFT) +#define OA_LOOPEXOP (13 << OCSHIFT) #define OASHIFT 13