/* gv.h
*
* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- * 2000, 2001, 2002, by Larry Wall and others
+ * 2000, 2001, 2002, 2003, 2004, 2005, 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.
GV * gp_egv; /* effective gv, if *glob */
CV * gp_cv; /* subroutine value */
U32 gp_cvgen; /* generational validity of cached gv_cv */
- U32 gp_flags; /* XXX unused */
line_t gp_line; /* line first declared at (for -w) */
char * gp_file; /* file first declared in (for -w) */
};
*/
#define GvSV(gv) (GvGP(gv)->gp_sv)
+#ifdef PERL_DONT_CREATE_GVSV
+#define GvSVn(gv) (*(GvGP(gv)->gp_sv ? \
+ &(GvGP(gv)->gp_sv) : \
+ &(GvGP(gv_SVadd(gv))->gp_sv)))
+#else
+#define GvSVn(gv) GvSV(gv)
+#endif
+
#define GvREFCNT(gv) (GvGP(gv)->gp_refcnt)
#define GvIO(gv) ((gv) && SvTYPE((SV*)gv) == SVt_PVGV && GvGP(gv) ? GvIOp(gv) : 0)
#define GvIOp(gv) (GvGP(gv)->gp_io)
#define GvCVGEN(gv) (GvGP(gv)->gp_cvgen)
#define GvCVu(gv) (GvGP(gv)->gp_cvgen ? Nullcv : GvGP(gv)->gp_cv)
-#define GvGPFLAGS(gv) (GvGP(gv)->gp_flags)
-
#define GvLINE(gv) (GvGP(gv)->gp_line)
#define GvFILE(gv) (GvGP(gv)->gp_file)
#define GvFILEGV(gv) (gv_fetchfile(GvFILE(gv)))
#define GvIN_PAD_on(gv) (GvFLAGS(gv) |= GVf_IN_PAD)
#define GvIN_PAD_off(gv) (GvFLAGS(gv) &= ~GVf_IN_PAD)
-/* XXX: all GvFLAGS options are used, borrowing GvGPFLAGS for the moment */
-
-#define GVf_UNIQUE 0x0001
-#define GvUNIQUE(gv) (GvGP(gv) && (GvGPFLAGS(gv) & GVf_UNIQUE))
-#define GvUNIQUE_on(gv) (GvGPFLAGS(gv) |= GVf_UNIQUE)
-#define GvUNIQUE_off(gv) (GvGPFLAGS(gv) &= ~GVf_UNIQUE)
+#define GvUNIQUE(gv) 0
+#define GvUNIQUE_on(gv)
+#define GvUNIQUE_off(gv)
#ifdef USE_ITHREADS
#define GV_UNIQUE_CHECK