X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=gv.h;h=73814a82ec0534f52a99eec1109504d2484ebf18;hb=d41c018a580ac2dafca04b156c937ada656fd14b;hp=d9a5b510372dc3892b2062835fc184c5721384bc;hpb=887986eb9473f45f115f0a49ec6a7899f43f8906;p=p5sagit%2Fp5-mst-13.2.git diff --git a/gv.h b/gv.h index d9a5b51..73814a8 100644 --- a/gv.h +++ b/gv.h @@ -24,7 +24,14 @@ struct gp { #define GvXPVGV(gv) ((XPVGV*)SvANY(gv)) -#define GvGP(gv) (GvXPVGV(gv)->xgv_gp) +#ifdef DEBUGGING +# define GvGP(gv) (*(assert(SvTYPE(gv) == SVt_PVGV || \ + SvTYPE(gv) == SVt_PVLV), \ + &(GvXPVGV(gv)->xgv_gp))) +#else +# define GvGP(gv) (GvXPVGV(gv)->xgv_gp) +#endif + #define GvNAME(gv) (GvXPVGV(gv)->xgv_name) #define GvNAMELEN(gv) (GvXPVGV(gv)->xgv_namelen) #define GvSTASH(gv) (GvXPVGV(gv)->xgv_stash) @@ -155,6 +162,11 @@ Return the SV from the GV. #define GV_ADDWARN 0x04 /* add, but warn if symbol wasn't already there */ #define GV_ADDINEVAL 0x08 /* add, as though we're doing so within an eval */ #define GV_NOINIT 0x10 /* add, but don't init symbol, if type != PVGV */ +/* This is used by toke.c to avoid turing placeholder constants in the symbol + table into full PVGVs with attached constant subroutines. */ +#define GV_NOADD_NOINIT 0x20 /* Don't add the symbol if it's not there. + Don't init it if it is there but ! PVGV */ + /* SVf_UTF8 (more accurately the return value from SvUTF8) is also valid as a flag to gv_fetch_pvn_flags, so ensure it lies outside this range. */