X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/7e5d8ed22a9e0983529873e07602c1b147b8b5b8..e91d68d56f1589ba6c8f530bcf8cdeb3d8943dcf:/op.h diff --git a/op.h b/op.h index 5283098..e7f1b6d 100644 --- a/op.h +++ b/op.h @@ -1,7 +1,7 @@ /* op.h * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - * 2000, 2001, 2002, 2003, 2004, 2005 by Larry Wall and others + * 2000, 2001, 2002, 2003, 2004, 2005, 2006 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. @@ -111,6 +111,8 @@ Deprecated. Use C instead. #define OPf_STACKED 64 /* Some arg is arriving on the stack. */ #define OPf_SPECIAL 128 /* Do something weird for this op: */ /* On local LVAL, don't init local value. */ + /* On OP_CONST, value is the hints hash for + eval, so return a copy from pp_const() */ /* On OP_SORT, subroutine is inlined. */ /* On OP_NOT, inversion was implicit. */ /* On OP_LEAVE, don't restore curpm. */ @@ -203,14 +205,14 @@ Deprecated. Use C instead. #define OPpLVAL_DEFER 16 /* Defer creation of array/hash elem */ /* OP_RV2?V, OP_GVSV, OP_ENTERITER only */ #define OPpOUR_INTRO 16 /* Variable was in an our() */ - /* OP_RV2[AH]V, OP_PAD[AH]V, OP_[AH]ELEM */ + /* OP_RV2[AGH]V, OP_PAD[AH]V, OP_[AH]ELEM */ #define OPpMAYBE_LVSUB 8 /* We might be an lvalue to return */ /* OP_PADSV only */ #define OPpPAD_STATE 16 /* is a "state" pad */ /* for OP_RV2?V, lower bits carry hints (currently only HINT_STRICT_REFS) */ /* OP_RV2GV only */ -#define OPpDONT_INIT_GV 8 /* Call gv_fetchpv with GV_NOINIT */ +#define OPpDONT_INIT_GV 4 /* Call gv_fetchpv with GV_NOINIT */ /* (Therefore will return whatever is currently in the symbol table, not guaranteed to be a PVGV) */ @@ -367,16 +369,19 @@ struct pmop { #define PMf_GLOBAL 0x0100 /* pattern had a g modifier */ #define PMf_CONTINUE 0x0200 /* don't reset pos() if //g fails */ #define PMf_EVAL 0x0400 /* evaluating replacement as expr */ -#define PMf_LOCALE 0x0800 /* use locale for character types */ -#define PMf_MULTILINE 0x1000 /* assume multiple lines */ -#define PMf_SINGLELINE 0x2000 /* assume single line */ -#define PMf_FOLD 0x4000 /* case insensitivity */ -#define PMf_EXTENDED 0x8000 /* chuck embedded whitespace */ - -/* mask of bits stored in regexp->extflags - these all are also called RXf_PMf_xyz + +/* The following flags have exact equivalents in regcomp.h with the prefix RXf_ + * which are stored in the regexp->extflags member. */ -#define PMf_COMPILETIME (PMf_MULTILINE|PMf_SINGLELINE|PMf_LOCALE|PMf_FOLD|PMf_EXTENDED) +#define PMf_LOCALE 0x00800 /* use locale for character types */ +#define PMf_MULTILINE 0x01000 /* assume multiple lines */ +#define PMf_SINGLELINE 0x02000 /* assume single line */ +#define PMf_FOLD 0x04000 /* case insensitivity */ +#define PMf_EXTENDED 0x08000 /* chuck embedded whitespace */ +#define PMf_KEEPCOPY 0x10000 /* copy the string when matching */ + +/* mask of bits that need to be transfered to re->extflags */ +#define PMf_COMPILETIME (PMf_MULTILINE|PMf_SINGLELINE|PMf_LOCALE|PMf_FOLD|PMf_EXTENDED|PMf_KEEPCOPY) #ifdef USE_ITHREADS @@ -575,7 +580,8 @@ struct loop { /* no longer used anywhere in core */ #ifndef PERL_CORE -#define cv_ckproto(cv, gv, p) cv_ckproto_len(cv, gv, p, p ? strlen(p) : 0) +#define cv_ckproto(cv, gv, p) \ + cv_ckproto_len((cv), (gv), (p), (p) ? strlen(p) : 0) #endif #ifdef USE_REENTRANT_API @@ -584,9 +590,9 @@ struct loop { #if defined(PL_OP_SLAB_ALLOC) #define NewOp(m,var,c,type) \ - (var = (type *) Perl_Slab_Alloc(aTHX_ m,c*sizeof(type))) + (var = (type *) Perl_Slab_Alloc(aTHX_ c*sizeof(type))) #define NewOpSz(m,var,size) \ - (var = (OP *) Perl_Slab_Alloc(aTHX_ m,size)) + (var = (OP *) Perl_Slab_Alloc(aTHX_ size)) #define FreeOp(p) Perl_Slab_Free(aTHX_ p) #else #define NewOp(m, var, c, type) \