X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=op.h;h=dd6307c4790eadb7a3c30fc3b4be91f94906215e;hb=dcc96bbd648270d5e7184f192cb9bada22ded67e;hp=a13df7752eab1e4fffa389fa386e8dcb3d24b421;hpb=4f63d0249796d635a70b03245ad972152a3eba76;p=p5sagit%2Fp5-mst-13.2.git diff --git a/op.h b/op.h index a13df77..dd6307c 100644 --- a/op.h +++ b/op.h @@ -127,10 +127,16 @@ typedef U32 PADOFFSET; /* OP_RV2CV only */ #define OPpENTERSUB_AMPER 8 /* Used & form to call. */ #define OPpENTERSUB_NOPAREN 128 /* bare sub call (without parens) */ + /* 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 */ +/* Private for OPs with TARGLEX */ + /* (lower bits may carry MAXARG) */ +#define OPpTARGET_MY 16 /* Target is PADMY. */ + /* Private for OP_CONST */ #define OPpCONST_STRICT 8 /* bearword subject to strict 'subs' */ #define OPpCONST_ENTERED 16 /* Has been entered as symbol. */ @@ -178,13 +184,6 @@ struct logop { OP * op_other; }; -struct condop { - BASEOP - OP * op_first; - OP * op_true; - OP * op_false; -}; - struct listop { BASEOP OP * op_first; @@ -258,7 +257,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) @@ -270,7 +268,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) @@ -283,7 +280,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) @@ -302,27 +298,29 @@ struct loop { #define OA_OTHERINT 32 #define OA_DANGEROUS 64 #define OA_DEFGV 128 +#define OA_TARGLEX 256 /* The next 4 bits encode op class information */ -#define OA_CLASS_MASK (15 << 8) - -#define OA_BASEOP (0 << 8) -#define OA_UNOP (1 << 8) -#define OA_BINOP (2 << 8) -#define OA_LOGOP (3 << 8) -#define OA_CONDOP (4 << 8) -#define OA_LISTOP (5 << 8) -#define OA_PMOP (6 << 8) -#define OA_SVOP (7 << 8) -#define OA_GVOP (8 << 8) -#define OA_PVOP_OR_SVOP (9 << 8) -#define OA_LOOP (10 << 8) -#define OA_COP (11 << 8) -#define OA_BASEOP_OR_UNOP (12 << 8) -#define OA_FILESTATOP (13 << 8) -#define OA_LOOPEXOP (14 << 8) - -#define OASHIFT 12 +#define OCSHIFT 9 + +#define OA_CLASS_MASK (15 << OCSHIFT) + +#define OA_BASEOP (0 << OCSHIFT) +#define OA_UNOP (1 << OCSHIFT) +#define OA_BINOP (2 << OCSHIFT) +#define OA_LOGOP (3 << 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 /* Remaining nybbles of PL_opargs */ #define OA_SCALAR 1