summaryrefslogtreecommitdiff
path: root/sv.h
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2006-02-19 22:35:24 +0000
committerNicholas Clark <nick@ccl4.org>2006-02-19 22:35:24 +0000
commit3038937ba48b6e3b2d22c372963d8f26d42c5e66 (patch)
tree490acff2e9ecadcc3b52af4b7b07ad13c9fc2222 /sv.h
parent675eb423df17d2e0babef81ea90dfb8da9bed761 (diff)
downloadperl-3038937ba48b6e3b2d22c372963d8f26d42c5e66.tar.gz
Shave sizeof(NV) bytes from formats, by using the same offset
manoeuvre as PVs, PVIVs, PVAVs and PVHVs. p4raw-id: //depot/perl@27231
Diffstat (limited to 'sv.h')
-rw-r--r--sv.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/sv.h b/sv.h
index d3ce22f5f3..44803bc6dd 100644
--- a/sv.h
+++ b/sv.h
@@ -446,6 +446,34 @@ struct xpvfm {
IV xfm_lines;
};
+typedef struct {
+ STRLEN xpv_cur; /* length of svu_pv as a C string */
+ STRLEN xpv_len; /* allocated size */
+ union {
+ IV xivu_iv; /* integer value or pv offset */
+ UV xivu_uv;
+ void * xivu_p1;
+ } xiv_u;
+ MAGIC* xmg_magic; /* linked list of magicalness */
+ HV* xmg_stash; /* class package */
+
+ HV * xcv_stash;
+ OP * xcv_start;
+ OP * xcv_root;
+ void (*xcv_xsub)(pTHX_ CV*);
+ ANY xcv_xsubany;
+ GV * xcv_gv;
+ char * xcv_file;
+ long xcv_depth; /* >= 2 indicates recursive call */
+ AV * xcv_padlist;
+ CV * xcv_outside;
+ cv_flags_t xcv_flags;
+ U32 xcv_outside_seq; /* the COP sequence (at the point of our
+ * compilation) in the lexically enclosing
+ * sub */
+ IV xfm_lines;
+} xpvfm_allocated;
+
struct xpvio {
NV xnv_nv; /* numeric value, if any */
STRLEN xpv_cur; /* length of svu_pv as a C string */
@@ -923,6 +951,7 @@ in gv.h: */
assert(SvTYPE(_svi) == SVt_NV || SvTYPE(_svi) >= SVt_PVNV); \
assert(SvTYPE(_svi) != SVt_PVAV); \
assert(SvTYPE(_svi) != SVt_PVHV); \
+ assert(SvTYPE(_svi) != SVt_PVFM); \
&(((XPVNV*) SvANY(_svi))->xnv_nv); \
}))
# define SvMAGIC(sv) \