X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=cv.h;h=65a34571f913943714d8bc020b53f711fa97e401;hb=e573f90328e9db84c5405db01c52908bfac9286d;hp=dd4e3ec0d7eaaa893a3929a0828af2cef5c7ccb7;hpb=f73ef291429b5bbca51e74d1a29b172b5d7304ea;p=p5sagit%2Fp5-mst-13.2.git diff --git a/cv.h b/cv.h index dd4e3ec..65a3457 100644 --- a/cv.h +++ b/cv.h @@ -11,7 +11,10 @@ /* This structure must the beginning of XPVFM in sv.h */ struct xpvcv { - NV xnv_nv; /* numeric value, if any */ + union { + NV xnv_nv; /* numeric value, if any */ + HV * xgv_stash; + } xnv_u; STRLEN xpv_cur; /* length of xp_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { @@ -19,8 +22,12 @@ struct xpvcv { UV xivu_uv; void * xivu_p1; I32 xivu_i32; /* depth, >= 2 indicates recursive call */ + HEK * xivu_namehek; } xiv_u; - MAGIC* xmg_magic; /* magic for scalar array */ + union { + MAGIC* xmg_magic; /* linked list of magicalness */ + HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ + } xmg_u; HV* xmg_stash; /* class package */ HV * xcv_stash; @@ -50,8 +57,12 @@ typedef struct { UV xivu_uv; void * xivu_p1; I32 xivu_i32; /* depth, >= 2 indicates recursive call */ + HEK * xivu_namehek; } xiv_u; - MAGIC* xmg_magic; /* magic for scalar array */ + union { + MAGIC* xmg_magic; /* linked list of magicalness */ + HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ + } xmg_u; HV* xmg_stash; /* class package */ HV * xcv_stash; @@ -125,9 +136,7 @@ Returns the stash of the CV. #define CVf_CLONED 0x0040 /* a clone of one of those */ #define CVf_ANON 0x0080 /* CvGV() can't be trusted */ #define CVf_UNIQUE 0x0100 /* sub is only called once (eg PL_main_cv, - * require, eval). Not to be confused - * with the GVf_UNIQUE flag associated - * with the :unique attribute */ + * require, eval). */ #define CVf_NODEBUG 0x0200 /* no DB::sub indirection for this CV (esp. useful for special XSUBs) */ #define CVf_CONST 0x0400 /* inlinable sub */ @@ -193,6 +202,9 @@ Returns the stash of the CV. #define CvISXSUB_on(cv) (CvFLAGS(cv) |= CVf_ISXSUB) #define CvISXSUB_off(cv) (CvFLAGS(cv) &= ~CVf_ISXSUB) +/* Flags for newXS_flags */ +#define XS_DYNAMIC_FILENAME 0x01 /* The filename isn't static */ + /* =head1 CV reference counts and CvOUTSIDE