summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buffer.h2
-rw-r--r--src/font.h6
-rw-r--r--src/frame.h2
-rw-r--r--src/lisp.h28
-rw-r--r--src/process.h2
-rw-r--r--src/termhooks.h2
-rw-r--r--src/thread.h6
-rw-r--r--src/w32term.h2
-rw-r--r--src/window.c8
-rw-r--r--src/window.h2
-rw-r--r--src/xterm.h2
-rw-r--r--src/xwidget.h4
12 files changed, 33 insertions, 33 deletions
diff --git a/src/buffer.h b/src/buffer.h
index ac7c5a54679..46c7c6e5ad6 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -504,7 +504,7 @@ struct buffer_text
struct buffer
{
- struct vectorlike_header header;
+ union vectorlike_header header;
/* The name of this buffer. */
Lisp_Object name_;
diff --git a/src/font.h b/src/font.h
index 8f2e27f0edd..43d6f67e3e9 100644
--- a/src/font.h
+++ b/src/font.h
@@ -244,7 +244,7 @@ enum font_property_index
struct font_spec
{
- struct vectorlike_header header;
+ union vectorlike_header header;
Lisp_Object props[FONT_SPEC_MAX];
};
@@ -252,7 +252,7 @@ struct font_spec
struct font_entity
{
- struct vectorlike_header header;
+ union vectorlike_header header;
Lisp_Object props[FONT_ENTITY_MAX];
};
@@ -265,7 +265,7 @@ struct font_entity
struct font
{
- struct vectorlike_header header;
+ union vectorlike_header header;
/* All Lisp_Object components must come first.
That ensures they are all aligned normally. */
diff --git a/src/frame.h b/src/frame.h
index e610fc768d3..a3b77636435 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -79,7 +79,7 @@ enum ns_appearance_type
struct frame
{
- struct vectorlike_header header;
+ union vectorlike_header header;
/* All Lisp_Object components must come first.
That ensures they are all aligned normally. */
diff --git a/src/lisp.h b/src/lisp.h
index 015346858b5..1d6fd5a4fe2 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -796,11 +796,11 @@ struct Lisp_Symbol
/* Header of vector-like objects. This documents the layout constraints on
vectors and pseudovectors (objects of PVEC_xxx subtype). It also prevents
compilers from being fooled by Emacs's type punning: XSETPSEUDOVECTOR
- and PSEUDOVECTORP cast their pointers to struct vectorlike_header *,
+ and PSEUDOVECTORP cast their pointers to union vectorlike_header *,
because when two such pointers potentially alias, a compiler won't
incorrectly reorder loads and stores to their size fields. See
Bug#8546. */
-struct vectorlike_header
+union vectorlike_header
{
/* The only field contains various pieces of information:
- The MSB (ARRAY_MARK_FLAG) holds the gcmarkbit.
@@ -1094,10 +1094,10 @@ INLINE bool
| ((restsize) << PSEUDOVECTOR_SIZE_BITS) \
| (lispsize)))
-/* The cast to struct vectorlike_header * avoids aliasing issues. */
+/* The cast to union vectorlike_header * avoids aliasing issues. */
#define XSETPSEUDOVECTOR(a, b, code) \
XSETTYPED_PSEUDOVECTOR (a, b, \
- (((struct vectorlike_header *) \
+ (((union vectorlike_header *) \
XUNTAG (a, Lisp_Vectorlike)) \
->size), \
code)
@@ -1399,7 +1399,7 @@ STRING_SET_CHARS (Lisp_Object string, ptrdiff_t newsize)
struct Lisp_Vector
{
- struct vectorlike_header header;
+ union vectorlike_header header;
Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER];
};
@@ -1456,7 +1456,7 @@ PSEUDOVECTOR_TYPE (struct Lisp_Vector *v)
/* Can't be used with PVEC_NORMAL_VECTOR. */
INLINE bool
-PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, enum pvec_type code)
+PSEUDOVECTOR_TYPEP (union vectorlike_header *a, enum pvec_type code)
{
/* We don't use PSEUDOVECTOR_TYPE here so as to avoid a shift
* operation when `code' is known. */
@@ -1472,8 +1472,8 @@ PSEUDOVECTORP (Lisp_Object a, int code)
return false;
else
{
- /* Converting to struct vectorlike_header * avoids aliasing issues. */
- struct vectorlike_header *h = XUNTAG (a, Lisp_Vectorlike);
+ /* Converting to union vectorlike_header * avoids aliasing issues. */
+ union vectorlike_header *h = XUNTAG (a, Lisp_Vectorlike);
return PSEUDOVECTOR_TYPEP (h, code);
}
}
@@ -1484,7 +1484,7 @@ struct Lisp_Bool_Vector
{
/* HEADER.SIZE is the vector's size field. It doesn't have the real size,
just the subtype information. */
- struct vectorlike_header header;
+ union vectorlike_header header;
/* This is the size in bits. */
EMACS_INT size;
/* The actual bits, packed into bytes.
@@ -1697,7 +1697,7 @@ struct Lisp_Char_Table
pseudovector type information. It holds the size, too.
The size counts the defalt, parent, purpose, ascii,
contents, and extras slots. */
- struct vectorlike_header header;
+ union vectorlike_header header;
/* This holds a default value,
which is used whenever the value for a specific character is nil. */
@@ -1739,7 +1739,7 @@ struct Lisp_Sub_Char_Table
{
/* HEADER.SIZE is the vector's size field, which also holds the
pseudovector type information. It holds the size, too. */
- struct vectorlike_header header;
+ union vectorlike_header header;
/* Depth of this sub char-table. It should be 1, 2, or 3. A sub
char-table of depth 1 contains 16 elements, and each element
@@ -1814,7 +1814,7 @@ CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Object val)
struct Lisp_Subr
{
- struct vectorlike_header header;
+ union vectorlike_header header;
union {
Lisp_Object (*a0) (void);
Lisp_Object (*a1) (Lisp_Object);
@@ -2026,7 +2026,7 @@ struct hash_table_test
struct Lisp_Hash_Table
{
/* This is for Lisp; the hash table code does not refer to it. */
- struct vectorlike_header header;
+ union vectorlike_header header;
/* Nil if table is non-weak. Otherwise a symbol describing the
weakness of the table. */
@@ -3929,7 +3929,7 @@ typedef emacs_value (*emacs_subr) (emacs_env *, ptrdiff_t,
struct Lisp_Module_Function
{
- struct vectorlike_header header;
+ union vectorlike_header header;
/* Fields traced by GC; these must come first. */
Lisp_Object documentation;
diff --git a/src/process.h b/src/process.h
index 5a044f669f2..5670f447365 100644
--- a/src/process.h
+++ b/src/process.h
@@ -41,7 +41,7 @@ enum { PROCESS_OPEN_FDS = 6 };
struct Lisp_Process
{
- struct vectorlike_header header;
+ union vectorlike_header header;
/* Name of subprocess terminal. */
Lisp_Object tty_name;
diff --git a/src/termhooks.h b/src/termhooks.h
index dd6044aabd5..fe4e993c968 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -373,7 +373,7 @@ extern struct tty_display_info *gpm_tty;
struct terminal
{
/* This is for Lisp; the terminal code does not refer to it. */
- struct vectorlike_header header;
+ union vectorlike_header header;
/* Parameter alist of this terminal. */
Lisp_Object param_alist;
diff --git a/src/thread.h b/src/thread.h
index 19baafbf8a1..1845974bc28 100644
--- a/src/thread.h
+++ b/src/thread.h
@@ -35,7 +35,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
struct thread_state
{
- struct vectorlike_header header;
+ union vectorlike_header header;
/* The buffer in which the last search was performed, or
Qt if the last search was done in a string;
@@ -230,7 +230,7 @@ typedef struct
/* A mutex as a lisp object. */
struct Lisp_Mutex
{
- struct vectorlike_header header;
+ union vectorlike_header header;
/* The name of the mutex, or nil. */
Lisp_Object name;
@@ -261,7 +261,7 @@ XMUTEX (Lisp_Object a)
/* A condition variable as a lisp object. */
struct Lisp_CondVar
{
- struct vectorlike_header header;
+ union vectorlike_header header;
/* The associated mutex. */
Lisp_Object mutex;
diff --git a/src/w32term.h b/src/w32term.h
index 8d08ca0a2bf..de234cb57db 100644
--- a/src/w32term.h
+++ b/src/w32term.h
@@ -431,7 +431,7 @@ extern struct w32_output w32term_display;
struct scroll_bar {
/* This field is shared by all vectors. */
- struct vectorlike_header header;
+ union vectorlike_header header;
/* The window we're a scroll bar for. */
Lisp_Object window;
diff --git a/src/window.c b/src/window.c
index cc1d2a7b36e..7f472523b49 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3733,8 +3733,8 @@ make_parent_window (Lisp_Object window, bool horflag)
o = XWINDOW (window);
p = allocate_window ();
- memcpy ((char *) p + sizeof (struct vectorlike_header),
- (char *) o + sizeof (struct vectorlike_header),
+ memcpy ((char *) p + sizeof (union vectorlike_header),
+ (char *) o + sizeof (union vectorlike_header),
word_size * VECSIZE (struct window));
/* P's buffer slot may change from nil to a buffer... */
adjust_window_count (p, 1);
@@ -6232,7 +6232,7 @@ from the top of the window. */)
struct save_window_data
{
- struct vectorlike_header header;
+ union vectorlike_header header;
Lisp_Object selected_frame;
Lisp_Object current_window;
Lisp_Object f_current_buffer;
@@ -6260,7 +6260,7 @@ struct save_window_data
/* This is saved as a Lisp_Vector. */
struct saved_window
{
- struct vectorlike_header header;
+ union vectorlike_header header;
Lisp_Object window, buffer, start, pointm, old_pointm;
Lisp_Object pixel_left, pixel_top, pixel_height, pixel_width;
diff --git a/src/window.h b/src/window.h
index df7c23f824b..25c9686a9f0 100644
--- a/src/window.h
+++ b/src/window.h
@@ -88,7 +88,7 @@ struct cursor_pos
struct window
{
/* This is for Lisp; the terminal code does not refer to it. */
- struct vectorlike_header header;
+ union vectorlike_header header;
/* The frame this window is on. */
Lisp_Object frame;
diff --git a/src/xterm.h b/src/xterm.h
index 6274630706f..7ab20ba06c6 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -887,7 +887,7 @@ extern void x_mark_frame_dirty (struct frame *f);
struct scroll_bar
{
/* These fields are shared by all vectors. */
- struct vectorlike_header header;
+ union vectorlike_header header;
/* The window we're a scroll bar for. */
Lisp_Object window;
diff --git a/src/xwidget.h b/src/xwidget.h
index 22a8eb3a557..02a0453dabb 100644
--- a/src/xwidget.h
+++ b/src/xwidget.h
@@ -33,7 +33,7 @@ struct window;
struct xwidget
{
- struct vectorlike_header header;
+ union vectorlike_header header;
/* Auxiliary data. */
Lisp_Object plist;
@@ -62,7 +62,7 @@ struct xwidget
struct xwidget_view
{
- struct vectorlike_header header;
+ union vectorlike_header header;
Lisp_Object model;
Lisp_Object w;