X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/b37c2d43c8bccbefe3985273e9661833102148d0..9f7f391326e967b539b86ed051c163bbf8f6e7de:/cop.h diff --git a/cop.h b/cop.h index ef92d8e..fc69b91 100644 --- a/cop.h +++ b/cop.h @@ -148,6 +148,9 @@ struct cop { line_t cop_line; /* line # of this command */ SV * cop_warnings; /* lexical warnings bitmask */ SV * cop_io; /* lexical IO defaults */ + /* compile time state of %^H. See the comment in op.c for how this is + used to recreate a hash to return from caller. */ + struct refcounted_he * cop_hints; }; #ifdef USE_ITHREADS @@ -226,6 +229,18 @@ struct cop { # define OutCopFILE(c) CopFILE(c) #endif +/* CopARYBASE is likely to be removed soon. */ +#define CopARYBASE(c) ((c)->cop_arybase) +#define CopARYBASE_get(c) ((c)->cop_arybase + 0) +#define CopARYBASE_set(c, b) STMT_START { (c)->cop_arybase = (b); } STMT_END + +/* FIXME NATIVE_HINTS if this is changed from op_private (see perl.h) */ +#define CopHINTS_get(c) ((c)->op_private + 0) +#define CopHINTS_set(c, h) STMT_START { \ + (c)->op_private \ + = (U8)((h) & HINT_PRIVATE_MASK); \ + } STMT_END + /* * Here we have some enormously heavy (or at least ponderous) wizardry. */ @@ -417,7 +432,7 @@ struct block_loop { SvREFCNT_dec(cx->blk_loop.iterlval); \ if (CxITERVAR(cx)) { \ if (SvPADMY(cx->blk_loop.itersave)) { \ - SV **s_v_p = CxITERVAR(cx); \ + SV ** const s_v_p = CxITERVAR(cx); \ sv_2mortal(*s_v_p); \ *s_v_p = cx->blk_loop.itersave; \ } \ @@ -646,6 +661,8 @@ L. #define G_KEEPERR 16 /* Append errors to $@, don't overwrite it */ #define G_NODEBUG 32 /* Disable debugging at toplevel. */ #define G_METHOD 64 /* Calling method. */ +#define G_FAKINGEVAL 256 /* Faking en eval context for call_sv or + fold_constants. */ /* flag bits for PL_in_eval */ #define EVAL_NULL 0 /* not in an eval */ @@ -803,3 +820,13 @@ See L. CATCH_SET(multicall_oldcatch); \ LEAVE; \ } STMT_END + +/* + * Local variables: + * c-indentation-style: bsd + * c-basic-offset: 4 + * indent-tabs-mode: t + * End: + * + * ex: set ts=8 sts=4 sw=4 noet: + */