X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=op.h;h=b3f91aa341226c0ff31892fbdc98e5e31d343fb5;hb=6c16d61e47523e90f35cd004e44bb2f055ede7c4;hp=6482d20feed82ded36ab4e255dfaae042a9b246d;hpb=6b514a0d693c3972afe865013c60b5994c1c323c;p=p5sagit%2Fp5-mst-13.2.git diff --git a/op.h b/op.h index 6482d20..b3f91aa 100644 --- a/op.h +++ b/op.h @@ -105,11 +105,15 @@ Deprecated. Use C instead. /* On pushre, re is /\s+/ imp. by split " " */ /* On regcomp, "use re 'eval'" was in scope */ /* On OP_READLINE, was <$filehandle> */ - /* On RV2[SG]V, don't create GV--in defined()*/ + /* On RV2[ACGHS]V, don't create GV--in + defined()*/ /* On OP_DBSTATE, indicates breakpoint * (runtime property) */ /* On OP_AELEMFAST, indiciates pad var */ /* On OP_REQUIRE, was seen as CORE::require */ + /* On OP_ENTERWHEN, there's no condition */ + /* On OP_BREAK, an implicit break */ + /* On OP_SMARTMATCH, an implicit smartmatch */ /* old names; don't use in new code, but don't break them, either */ #define OPf_LIST OPf_WANT_LIST @@ -183,6 +187,7 @@ Deprecated. Use C instead. /* Private for OP_ENTERITER and OP_ITER */ #define OPpITER_REVERSED 4 /* for (reverse ...) */ +#define OPpITER_DEF 8 /* for $_ or for my $_ */ /* Private for OP_CONST */ #define OPpCONST_NOVER 2 /* no 6; */ @@ -211,6 +216,9 @@ Deprecated. Use C instead. #define OPpSORT_REVERSE 4 /* Reversed sort */ #define OPpSORT_INPLACE 8 /* sort in-place; eg @a = sort @a */ #define OPpSORT_DESCEND 16 /* Descending sort */ +#define OPpSORT_QSORT 32 /* Use quicksort (not mergesort) */ +#define OPpSORT_STABLE 64 /* Use a stable algorithm */ + /* Private for OP_THREADSV */ #define OPpDONE_SVREF 64 /* Been through newSVREF once */ @@ -224,7 +232,7 @@ Deprecated. Use C instead. #define OPpHUSH_VMSISH 64 /* hush DCL exit msg vmsish mode*/ #define OPpEXIT_VMSISH 128 /* exit(0) vs. exit(1) vmsish mode*/ -/* Private of OP_FTXXX */ +/* Private for OP_FTXXX */ #define OPpFT_ACCESS 2 /* use filetest 'access' */ #define OPpFT_STACKED 4 /* stacked filetest, as in "-f -x $f" */ #define OP_IS_FILETEST_ACCESS(op) \ @@ -238,6 +246,9 @@ Deprecated. Use C instead. /* Private for OP_(MAP|GREP)(WHILE|START) */ #define OPpGREP_LEX 2 /* iterate over lexical $_ */ +/* Private for OP_ENTEREVAL */ +#define OPpEVAL_HAS_HH 2 /* Does it have a copy of %^H */ + struct op { BASEOP }; @@ -289,7 +300,10 @@ struct pmop { #ifdef USE_ITHREADS #define PM_GETRE(o) (INT2PTR(REGEXP*,SvIVX(PL_regex_pad[(o)->op_pmoffset]))) -#define PM_SETRE(o,r) STMT_START { SV* sv = PL_regex_pad[(o)->op_pmoffset]; sv_setiv(sv, PTR2IV(r)); } STMT_END +#define PM_SETRE(o,r) STMT_START { \ + SV* const sv = PL_regex_pad[(o)->op_pmoffset]; \ + sv_setiv(sv, PTR2IV(r)); \ + } STMT_END #define PM_GETRE_SAFE(o) (PL_regex_pad ? PM_GETRE(o) : (REGEXP*)0) #define PM_SETRE_SAFE(o,r) if (PL_regex_pad) PM_SETRE(o,r) #else @@ -331,7 +345,7 @@ struct pmop { # define PmopSTASHPV(o) ((o)->op_pmstashpv) # define PmopSTASHPV_set(o,pv) (PmopSTASHPV(o) = savesharedpv(pv)) # define PmopSTASH(o) (PmopSTASHPV(o) \ - ? gv_stashpv(PmopSTASHPV(o),GV_ADD) : Nullhv) + ? gv_stashpv(PmopSTASHPV(o),GV_ADD) : NULL) # define PmopSTASH_set(o,hv) PmopSTASHPV_set(o, ((hv) ? HvNAME_get(hv) : Nullch)) # define PmopSTASH_free(o) PerlMemShared_free(PmopSTASHPV(o)) @@ -507,6 +521,9 @@ struct loop { #define PERL_LOADMOD_NOIMPORT 0x2 #define PERL_LOADMOD_IMPORT_OPS 0x4 +/* used in perly.y */ +#define ref(o, type) doref(o, type, TRUE) + #ifdef USE_REENTRANT_API #include "reentr.h" #endif