X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/a5bc03e938fb0f782e7f4172892f0134c42d0330..4ad0d3b9f11b33230f285a6e28f55f54490d90d8:/gv.h diff --git a/gv.h b/gv.h index ff24d91..e3357bc 100644 --- a/gv.h +++ b/gv.h @@ -12,13 +12,14 @@ struct gp { SV * gp_sv; /* scalar value */ struct io * gp_io; /* filehandle value */ CV * gp_cv; /* subroutine value */ - U32 gp_cvgen; /* generational validity of cached gv_cv */ + U32 gp_cvgen; /* generational validity of cached gp_cv */ U32 gp_refcnt; /* how many globs point to this? */ HV * gp_hv; /* hash value */ AV * gp_av; /* array value */ CV * gp_form; /* format value */ GV * gp_egv; /* effective gv, if *glob */ - line_t gp_line; /* line first declared at (for -w) */ + PERL_BITFIELD32 gp_line:31; /* line first declared at (for -w) */ + PERL_BITFIELD32 gp_flags:1; HEK * gp_file_hek; /* file first declared in (for -w) */ }; @@ -71,11 +72,6 @@ struct gp { #define GvNAME(gv) GvNAME_get(gv) #define GvNAMELEN(gv) GvNAMELEN_get(gv) -#define GvASSIGN_GENERATION(gv) (0 + ((XPV*) SvANY(gv))->xpv_len) -#define GvASSIGN_GENERATION_set(gv,val) \ - STMT_START { assert(SvTYPE(gv) == SVt_PVGV); \ - (((XPV*) SvANY(gv))->xpv_len = (val)); } STMT_END - /* =head1 GV Functions @@ -139,6 +135,8 @@ Return the CV from the GV. #define GvCVGEN(gv) (GvGP(gv)->gp_cvgen) #define GvCVu(gv) (GvGP(gv)->gp_cvgen ? NULL : GvGP(gv)->gp_cv) +#define GvGPFLAGS(gv) (GvGP(gv)->gp_flags) + #define GvLINE(gv) (GvGP(gv)->gp_line) #define GvFILE_HEK(gv) (GvGP(gv)->gp_file_hek) #define GvFILEx(gv) HEK_KEY(GvFILE_HEK(gv)) @@ -153,6 +151,10 @@ Return the CV from the GV. #define GvENAME_HEK(gv) GvNAME_HEK(GvEGV(gv) ? GvEGV(gv) : gv) #define GvESTASH(gv) GvSTASH(GvEGV(gv) ? GvEGV(gv) : gv) +/* GVf_INTRO is one-shot flag which indicates that the next assignment + of a reference to the glob is to be localised; it distinguishes + 'local *g = $ref' from '*g = $ref'. +*/ #define GVf_INTRO 0x01 #define GVf_MULTI 0x02 #define GVf_ASSUMECV 0x04 @@ -280,11 +282,5 @@ Return the CV from the GV. #define gv_SVadd(gv) gv_add_by_type((gv), SVt_NULL) /* - * Local variables: - * c-indentation-style: bsd - * c-basic-offset: 4 - * indent-tabs-mode: nil - * End: - * * ex: set ts=8 sts=4 sw=4 et: */