Eliminate macro _XPVIO_TAIL by inlining it within struct xpvio.
authorNicholas Clark <nick@ccl4.org>
Mon, 28 Jun 2010 15:45:01 +0000 (16:45 +0100)
committerNicholas Clark <nick@ccl4.org>
Mon, 28 Jun 2010 21:53:59 +0000 (22:53 +0100)
_XPVIO_TAIL was added in 167f2c4d08e1e800, but has only been used in 1 location
since xpvio_allocated was removed in b6f609162799aa49. This restores the header
layout to the situation as it was before 167f2c4d08e1e800, although there are
changes to the structure itself.

sv.h

diff --git a/sv.h b/sv.h
index 3f31920..9c6dfd8 100644 (file)
--- a/sv.h
+++ b/sv.h
@@ -505,40 +505,37 @@ struct xpvfm {
     IV         xfm_lines;
 };
 
-#define _XPVIO_TAIL                                                    \
-    PerlIO *   xio_ifp;        /* ifp and ofp are normally the same */ \
-    PerlIO *   xio_ofp;        /* but sockets need separate streams */ \
-    /* Cray addresses everything by word boundaries (64 bits) and      \
-     * code and data pointers cannot be mixed (which is exactly what   \
-     * Perl_filter_add() tries to do with the dirp), hence the         \
-     *  following union trick (as suggested by Gurusamy Sarathy).      \
-     * For further information see Geir Johansen's problem report      \
-     * titled [ID 20000612.002] Perl problem on Cray system            \
-     * The any pointer (known as IoANY()) will also be a good place    \
-     * to hang any IO disciplines to.                                  \
-     */                                                                        \
-    union {                                                            \
-       DIR *   xiou_dirp;      /* for opendir, readdir, etc */         \
-       void *  xiou_any;       /* for alignment */                     \
-    } xio_dirpu;                                                       \
-    /* IV xio_lines is now in IVX  $. */                               \
-    IV         xio_page;       /* $% */                                \
-    IV         xio_page_len;   /* $= */                                \
-    IV         xio_lines_left; /* $- */                                \
-    char *     xio_top_name;   /* $^ */                                \
-    GV *       xio_top_gv;     /* $^ */                                \
-    char *     xio_fmt_name;   /* $~ */                                \
-    GV *       xio_fmt_gv;     /* $~ */                                \
-    char *     xio_bottom_name;/* $^B */                               \
-    GV *       xio_bottom_gv;  /* $^B */                               \
-    char       xio_type;                                               \
-    U8         xio_flags
-
 
 struct xpvio {
     _XPV_HEAD;
     union _xivu xiv_u;
-    _XPVIO_TAIL;
+    PerlIO *   xio_ifp;        /* ifp and ofp are normally the same */
+    PerlIO *   xio_ofp;        /* but sockets need separate streams */
+    /* Cray addresses everything by word boundaries (64 bits) and
+     * code and data pointers cannot be mixed (which is exactly what
+     * Perl_filter_add() tries to do with the dirp), hence the
+     *  following union trick (as suggested by Gurusamy Sarathy).
+     * For further information see Geir Johansen's problem report
+     * titled [ID 20000612.002] Perl problem on Cray system
+     * The any pointer (known as IoANY()) will also be a good place
+     * to hang any IO disciplines to.
+     */
+    union {
+       DIR *   xiou_dirp;      /* for opendir, readdir, etc */
+       void *  xiou_any;       /* for alignment */
+    } xio_dirpu;
+    /* IV xio_lines is now in IVX  $. */
+    IV         xio_page;       /* $% */
+    IV         xio_page_len;   /* $= */
+    IV         xio_lines_left; /* $- */
+    char *     xio_top_name;   /* $^ */
+    GV *       xio_top_gv;     /* $^ */
+    char *     xio_fmt_name;   /* $~ */
+    GV *       xio_fmt_gv;     /* $~ */
+    char *     xio_bottom_name;/* $^B */
+    GV *       xio_bottom_gv;  /* $^B */
+    char       xio_type;
+    U8         xio_flags;
 };
 
 #define xio_dirp       xio_dirpu.xiou_dirp