mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-07 04:10:27 -08:00
Turn union vectorlike_header into struct vectorlike_header
This makes it feasible to add GC header members to this struct; keeping it as a union and merely turning its contents into a struct would have been misleading and required more difficult changes. * src/lisp.h (struct vectorlike_header): New type. Adjust comments. (union vectorlike_header): Remove. (PSEUDOVECTORP): (XSETPVECTYPESIZE): (struct Lisp_Vector): (PSEUDOVECTOR_TYPEP): (struct Lisp_Bool_Vector): (struct Lisp_Char_Table): (struct Lisp_Sub_Char_Table): (struct Lisp_Subr): (struct Lisp_Obarray): (struct Lisp_Weak_Hash_Table): (struct Lisp_Hash_Table): (struct Lisp_Marker): (struct Lisp_Overlay) (struct Lisp_Misc_Ptr): (struct Lisp_Sqlite): (struct Lisp_User_Ptr): (struct Lisp_Finalizer): (vectorlike_nbytes): * src/alloc.c (pseudovector_nbytes): (vectorlike_nbytes): (vectorlike_marked_p): (set_vectorlike_marked): (mark_vectorlike): * src/androidterm.h (struct scroll_bar): * src/bignum.h (struct Lisp_Bignum): * src/buffer.h (struct buffer): * src/comp.c (helper_PSEUDOVECTOR_TYPEP_XUNTAG): * src/comp.h (struct Lisp_Native_Comp_Unit): * src/emacs-module.c (struct Lisp_Module_Function): * src/emacs-module.h.in (struct module_global_reference): * src/font.h (struct font_spec, struct font_entity) (struct font): * src/frame.h (struct frame): * src/haikuterm.h (struct scroll_bar): Adjust * src/pdumper.c (_dump_object_start_pseudovector): (START_DUMP_PVEC): (finish_dump_pvec): (dump_pseudovector_lisp_fields): (dump_vectorlike_generic): (fill_pseudovec): (dump_nilled_pseudovec): * src/pgtkterm.h (struct scroll_bar): * src/process.h (struct Lisp_Process): * src/termhooks.h (struct terminal): * src/thread.h (struct thread_state): (struct Lisp_Mutex): (struct Lisp_CondVar): * src/treesit.h (struct Lisp_TS_Parser) (struct Lisp_TS_Node): (struct Lisp_TS_Query): * src/w32term.h (struct scroll_bar): * src/window.c (make_parent_window): (struct save_window_data): (struct saved_window): * src/window.h (struct window): * src/xterm.h (struct scroll_bar): * src/xwidget.h (struct xwidget): (struct xwidget_view): Replace `union vectorlike_header' by `struct vectorlike_header' throughout. * doc/lispref/internals.texi: Fix references.
This commit is contained in:
parent
4b1e9ffbc4
commit
6068cf00cd
24 changed files with 74 additions and 76 deletions
|
|
@ -334,7 +334,7 @@ of 8k bytes, and small vectors are packed into blocks of 4k bytes).
|
|||
@cindex storage of vector-like Lisp objects
|
||||
Beyond the basic vector, a lot of objects like markers, overlays and
|
||||
buffers are managed as if they were vectors. The corresponding C data
|
||||
structures include the @code{union vectorlike_header} field whose
|
||||
structures include the @code{struct vectorlike_header} field whose
|
||||
@code{size} member contains the subtype enumerated by @code{enum pvec_type}
|
||||
and an information about how many @code{Lisp_Object} fields this structure
|
||||
contains and what the size of the rest data is. This information is
|
||||
|
|
@ -2366,7 +2366,7 @@ Some of the fields of @code{struct buffer} are:
|
|||
|
||||
@table @code
|
||||
@item header
|
||||
A header of type @code{union vectorlike_header} is common to all
|
||||
A header of type @code{struct vectorlike_header} is common to all
|
||||
vectorlike objects.
|
||||
|
||||
@item own_text
|
||||
|
|
|
|||
14
src/alloc.c
14
src/alloc.c
|
|
@ -471,8 +471,8 @@ static void compact_small_strings (void);
|
|||
static void free_large_strings (void);
|
||||
|
||||
static bool vector_marked_p (struct Lisp_Vector const *);
|
||||
static bool vectorlike_marked_p (union vectorlike_header const *);
|
||||
static void set_vectorlike_marked (union vectorlike_header *);
|
||||
static bool vectorlike_marked_p (struct vectorlike_header const *);
|
||||
static void set_vectorlike_marked (struct vectorlike_header *);
|
||||
static bool interval_marked_p (INTERVAL);
|
||||
static void set_interval_marked (INTERVAL);
|
||||
#endif
|
||||
|
|
@ -3298,7 +3298,7 @@ init_vectors (void)
|
|||
|
||||
/* Memory footprint in bytes of a pseudovector other than a bool-vector. */
|
||||
static ptrdiff_t
|
||||
pseudovector_nbytes (const union vectorlike_header *hdr)
|
||||
pseudovector_nbytes (const struct vectorlike_header *hdr)
|
||||
{
|
||||
eassert (!PSEUDOVECTOR_TYPEP (hdr, PVEC_BOOL_VECTOR));
|
||||
ptrdiff_t nwords = ((hdr->size & PSEUDOVECTOR_SIZE_MASK)
|
||||
|
|
@ -3386,7 +3386,7 @@ allocate_vector_from_block (ptrdiff_t nbytes)
|
|||
#endif // nto HAVE_MPS
|
||||
|
||||
ptrdiff_t
|
||||
vectorlike_nbytes (const union vectorlike_header *hdr)
|
||||
vectorlike_nbytes (const struct vectorlike_header *hdr)
|
||||
{
|
||||
ptrdiff_t size = hdr->size & ~ARRAY_MARK_FLAG;
|
||||
ptrdiff_t nwords;
|
||||
|
|
@ -4431,13 +4431,13 @@ set_vector_marked (struct Lisp_Vector *v)
|
|||
}
|
||||
|
||||
static bool
|
||||
vectorlike_marked_p (const union vectorlike_header *header)
|
||||
vectorlike_marked_p (const struct vectorlike_header *header)
|
||||
{
|
||||
return vector_marked_p ((const struct Lisp_Vector *) header);
|
||||
}
|
||||
|
||||
static void
|
||||
set_vectorlike_marked (union vectorlike_header *header)
|
||||
set_vectorlike_marked (struct vectorlike_header *header)
|
||||
{
|
||||
set_vector_marked ((struct Lisp_Vector *) header);
|
||||
}
|
||||
|
|
@ -7136,7 +7136,7 @@ ptrdiff_t mark_object_loop_halt EXTERNALLY_VISIBLE;
|
|||
|
||||
#ifndef HAVE_MPS
|
||||
static void
|
||||
mark_vectorlike (union vectorlike_header *header)
|
||||
mark_vectorlike (struct vectorlike_header *header)
|
||||
{
|
||||
struct Lisp_Vector *ptr = (struct Lisp_Vector *) header;
|
||||
ptrdiff_t size = ptr->header.size;
|
||||
|
|
|
|||
|
|
@ -338,7 +338,7 @@ enum
|
|||
struct scroll_bar
|
||||
{
|
||||
/* These fields are shared by all vectors. */
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* The window we're a scroll bar for. */
|
||||
Lisp_Object window;
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ enum { GMP_NUMB_BITS = TYPE_WIDTH (mp_limb_t) };
|
|||
|
||||
struct Lisp_Bignum
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
mpz_t value;
|
||||
} GCALIGNED_STRUCT;
|
||||
|
||||
|
|
|
|||
|
|
@ -308,7 +308,7 @@ enum { UNKNOWN_MODTIME_NSECS = -2 };
|
|||
|
||||
struct buffer
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* The name of this buffer. */
|
||||
Lisp_Object name_;
|
||||
|
|
|
|||
|
|
@ -5084,7 +5084,7 @@ static bool
|
|||
helper_PSEUDOVECTOR_TYPEP_XUNTAG (Lisp_Object a, enum pvec_type code)
|
||||
{
|
||||
return PSEUDOVECTOR_TYPEP (XUNTAG (a, Lisp_Vectorlike,
|
||||
union vectorlike_header),
|
||||
struct vectorlike_header),
|
||||
code);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ struct igc_root_list;
|
|||
|
||||
struct Lisp_Native_Comp_Unit
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
/* The original eln file loaded. In the pdumper file this is stored
|
||||
as a cons cell of 2 alternative file names: the car is the
|
||||
filename relative to the directory of an installed binary, the
|
||||
|
|
|
|||
|
|
@ -534,7 +534,7 @@ module_non_local_exit_throw (emacs_env *env, emacs_value tag, emacs_value value)
|
|||
|
||||
struct Lisp_Module_Function
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* Fields traced by GC; these must come first. */
|
||||
Lisp_Object documentation, interactive_form, command_modes;
|
||||
|
|
|
|||
|
|
@ -230,7 +230,7 @@ struct emacs_value_tag { Lisp_Object v; };
|
|||
|
||||
struct module_global_reference {
|
||||
/* Pseudovector header, must come first. */
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* Holds the emacs_value for the object. The Lisp_Object stored
|
||||
therein must be the same as the hash key. */
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ enum font_property_index
|
|||
|
||||
struct font_spec
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
Lisp_Object props[FONT_SPEC_MAX];
|
||||
};
|
||||
|
||||
|
|
@ -258,7 +258,7 @@ struct font_spec
|
|||
|
||||
struct font_entity
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
Lisp_Object props[FONT_ENTITY_MAX];
|
||||
|
||||
#if defined HAVE_ANDROID && !defined ANDROID_STUBIFY
|
||||
|
|
@ -276,7 +276,7 @@ struct font_entity
|
|||
|
||||
struct font
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* All Lisp_Object components must come first.
|
||||
That ensures they are all aligned normally. */
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ struct text_conversion_state
|
|||
|
||||
struct frame
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* All Lisp_Object components must come first.
|
||||
That ensures they are all aligned normally. */
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ extern frame_parm_handler haiku_frame_parm_handlers[];
|
|||
struct scroll_bar
|
||||
{
|
||||
/* These fields are shared by all vectors. */
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* The window we're a scroll bar for. */
|
||||
Lisp_Object window;
|
||||
|
|
|
|||
52
src/lisp.h
52
src/lisp.h
|
|
@ -495,7 +495,7 @@ typedef EMACS_INT Lisp_Word;
|
|||
01........ ........10 fixnum signed integer of FIXNUM_BITS
|
||||
110....... .......011 cons pointer to struct Lisp_Cons
|
||||
100....... .......100 string pointer to struct Lisp_String
|
||||
101....... .......101 vectorlike pointer to union vectorlike_header
|
||||
101....... .......101 vectorlike pointer to struct vectorlike_header
|
||||
111....... .......111 float pointer to struct Lisp_Float */
|
||||
enum Lisp_Type
|
||||
{
|
||||
|
|
@ -960,13 +960,11 @@ typedef EMACS_UINT Lisp_Word_tag;
|
|||
/* 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 union vectorlike_header *,
|
||||
and PSEUDOVECTORP cast their pointers to struct 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. This union formerly contained more members, and there's
|
||||
no compelling reason to change it to a struct merely because the
|
||||
number of members has been reduced to one. */
|
||||
union vectorlike_header
|
||||
Bug#8546. */
|
||||
struct vectorlike_header
|
||||
{
|
||||
/* The `size' header word, W bits wide, has one of two forms
|
||||
discriminated by the second-highest bit (PSEUDOVECTOR_FLAG):
|
||||
|
|
@ -1002,7 +1000,7 @@ union vectorlike_header
|
|||
|
||||
struct Lisp_Symbol_With_Pos
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
Lisp_Object sym; /* A symbol */
|
||||
Lisp_Object pos; /* A fixnum */
|
||||
} GCALIGNED_STRUCT;
|
||||
|
|
@ -1104,7 +1102,7 @@ INLINE bool
|
|||
PSEUDOVECTORP (Lisp_Object a, int code)
|
||||
{
|
||||
return (lisp_h_VECTORLIKEP (a)
|
||||
&& ((XUNTAG (a, Lisp_Vectorlike, union vectorlike_header)->size
|
||||
&& ((XUNTAG (a, Lisp_Vectorlike, struct vectorlike_header)->size
|
||||
& (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK))
|
||||
== (PSEUDOVECTOR_FLAG | (code << PSEUDOVECTOR_AREA_BITS))));
|
||||
}
|
||||
|
|
@ -1418,11 +1416,11 @@ dead_object (void)
|
|||
#define XSETPVECTYPESIZE(v, code, lispsize, restsize) \
|
||||
((v)->header.size = PVECHEADERSIZE (code, lispsize, restsize))
|
||||
|
||||
/* The cast to union vectorlike_header * avoids aliasing issues. */
|
||||
/* The cast to struct vectorlike_header * avoids aliasing issues. */
|
||||
#define XSETPSEUDOVECTOR(a, b, code) \
|
||||
XSETTYPED_PSEUDOVECTOR (a, b, \
|
||||
(XUNTAG (a, Lisp_Vectorlike, \
|
||||
union vectorlike_header) \
|
||||
struct vectorlike_header) \
|
||||
->size), \
|
||||
code)
|
||||
#define XSETTYPED_PSEUDOVECTOR(a, b, size, code) \
|
||||
|
|
@ -1781,7 +1779,7 @@ string_immovable_p (Lisp_Object str)
|
|||
|
||||
struct Lisp_Vector
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
Lisp_Object contents[FLEXIBLE_ARRAY_MEMBER];
|
||||
} GCALIGNED_STRUCT;
|
||||
|
||||
|
|
@ -1847,7 +1845,7 @@ PSEUDOVECTOR_TYPE (const struct Lisp_Vector *v)
|
|||
|
||||
/* Can't be used with PVEC_NORMAL_VECTOR. */
|
||||
INLINE bool
|
||||
PSEUDOVECTOR_TYPEP (const union vectorlike_header *a, enum pvec_type code)
|
||||
PSEUDOVECTOR_TYPEP (const struct 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. */
|
||||
|
|
@ -1861,7 +1859,7 @@ struct Lisp_Bool_Vector
|
|||
{
|
||||
/* HEADER.SIZE is the vector's size field. It doesn't have the real size,
|
||||
just the subtype information. */
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
/* This is the size in bits. */
|
||||
EMACS_INT size;
|
||||
/* The actual bits, packed into bytes.
|
||||
|
|
@ -1875,7 +1873,7 @@ struct Lisp_Bool_Vector
|
|||
and offsets, mostly of vectorlike objects.
|
||||
|
||||
The garbage collector assumes that the initial part of any struct
|
||||
that starts with a union vectorlike_header followed by N
|
||||
that starts with a struct vectorlike_header followed by N
|
||||
Lisp_Objects (some possibly in arrays and/or a trailing flexible
|
||||
array) will be laid out like a struct Lisp_Vector with N
|
||||
Lisp_Objects. This assumption is true in practice on known Emacs
|
||||
|
|
@ -2102,7 +2100,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. */
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* This holds the default value, which is used whenever the value
|
||||
for a specific character is nil. */
|
||||
|
|
@ -2146,7 +2144,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. */
|
||||
union vectorlike_header header;
|
||||
struct 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
|
||||
|
|
@ -2221,7 +2219,7 @@ CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Object val)
|
|||
|
||||
struct Lisp_Subr
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
union {
|
||||
Lisp_Object (*a0) (void);
|
||||
Lisp_Object (*a1) (Lisp_Object);
|
||||
|
|
@ -2441,7 +2439,7 @@ INLINE int
|
|||
|
||||
struct Lisp_Obarray
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* Array of 2**size_bits values, each being either a (bare) symbol or
|
||||
the fixnum 0. The symbols for each bucket are chained via
|
||||
|
|
@ -2653,7 +2651,7 @@ struct Lisp_Weak_Hash_Table_Weak_Part
|
|||
|
||||
struct Lisp_Weak_Hash_Table
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
struct Lisp_Weak_Hash_Table_Strong_Part *strong;
|
||||
struct Lisp_Weak_Hash_Table_Weak_Part *weak;
|
||||
|
|
@ -2662,7 +2660,7 @@ struct Lisp_Weak_Hash_Table
|
|||
|
||||
struct Lisp_Hash_Table
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* Hash table internal structure:
|
||||
|
||||
|
|
@ -3020,7 +3018,7 @@ knuth_hash (hash_hash_t hash, unsigned bits)
|
|||
|
||||
struct Lisp_Marker
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* This is the buffer that the marker points into, or 0 if it points nowhere.
|
||||
Note: a chain of markers can contain markers pointing into different
|
||||
|
|
@ -3079,7 +3077,7 @@ struct Lisp_Overlay
|
|||
- end buffer position (field of the itree node)
|
||||
- insertion types of both ends (fields of the itree node). */
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
Lisp_Object plist;
|
||||
struct buffer *buffer; /* eassert (live buffer || NULL). */
|
||||
struct itree_node *interval;
|
||||
|
|
@ -3087,7 +3085,7 @@ struct Lisp_Overlay
|
|||
|
||||
struct Lisp_Misc_Ptr
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
void *pointer;
|
||||
} GCALIGNED_STRUCT;
|
||||
|
||||
|
|
@ -3132,7 +3130,7 @@ xmint_pointer (Lisp_Object a)
|
|||
|
||||
struct Lisp_Sqlite
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
void *db;
|
||||
void *stmt;
|
||||
char *name;
|
||||
|
|
@ -3143,7 +3141,7 @@ struct Lisp_Sqlite
|
|||
|
||||
struct Lisp_User_Ptr
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
void (*finalizer) (void *);
|
||||
void *p;
|
||||
} GCALIGNED_STRUCT;
|
||||
|
|
@ -3151,7 +3149,7 @@ struct Lisp_User_Ptr
|
|||
/* A finalizer sentinel. */
|
||||
struct Lisp_Finalizer
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* Call FUNCTION when the finalizer becomes unreachable, even if
|
||||
FUNCTION contains a reference to the finalizer; i.e., call
|
||||
|
|
@ -4835,7 +4833,7 @@ extern Lisp_Object make_string (const char *, ptrdiff_t);
|
|||
extern Lisp_Object make_formatted_string (char *, const char *, ...)
|
||||
ATTRIBUTE_FORMAT_PRINTF (2, 3);
|
||||
extern Lisp_Object make_unibyte_string (const char *, ptrdiff_t);
|
||||
extern ptrdiff_t vectorlike_nbytes (const union vectorlike_header *hdr);
|
||||
extern ptrdiff_t vectorlike_nbytes (const struct vectorlike_header *hdr);
|
||||
|
||||
INLINE ptrdiff_t
|
||||
vector_nbytes (const struct Lisp_Vector *v)
|
||||
|
|
|
|||
|
|
@ -2064,8 +2064,8 @@ dump_field_emacs_ptr (struct dump_context *ctx,
|
|||
|
||||
static void
|
||||
_dump_object_start_pseudovector (struct dump_context *ctx,
|
||||
union vectorlike_header *out_hdr,
|
||||
const union vectorlike_header *in_hdr)
|
||||
struct vectorlike_header *out_hdr,
|
||||
const struct vectorlike_header *in_hdr)
|
||||
{
|
||||
eassert (in_hdr->size & PSEUDOVECTOR_FLAG);
|
||||
ptrdiff_t vec_size = vectorlike_nbytes (in_hdr);
|
||||
|
|
@ -2075,21 +2075,21 @@ _dump_object_start_pseudovector (struct dump_context *ctx,
|
|||
|
||||
/* Need a macro for alloca. */
|
||||
#define START_DUMP_PVEC(ctx, hdr, type, out) \
|
||||
const union vectorlike_header *_in_hdr = (hdr); \
|
||||
const struct vectorlike_header *_in_hdr = (hdr); \
|
||||
type *out = alloca (vectorlike_nbytes (_in_hdr)); \
|
||||
_dump_object_start_pseudovector (ctx, &out->header, _in_hdr)
|
||||
|
||||
static dump_off
|
||||
finish_dump_pvec (struct dump_context *ctx,
|
||||
union vectorlike_header *out_hdr)
|
||||
struct vectorlike_header *out_hdr)
|
||||
{
|
||||
return dump_object_finish (ctx, out_hdr, vectorlike_nbytes (out_hdr));
|
||||
}
|
||||
|
||||
static void
|
||||
dump_pseudovector_lisp_fields (struct dump_context *ctx,
|
||||
union vectorlike_header *out_hdr,
|
||||
const union vectorlike_header *in_hdr)
|
||||
struct vectorlike_header *out_hdr,
|
||||
const struct vectorlike_header *in_hdr)
|
||||
{
|
||||
const struct Lisp_Vector *in = (const struct Lisp_Vector *) in_hdr;
|
||||
struct Lisp_Vector *out = (struct Lisp_Vector *) out_hdr;
|
||||
|
|
@ -2562,7 +2562,7 @@ dump_symbol (struct dump_context *ctx,
|
|||
|
||||
static dump_off
|
||||
dump_vectorlike_generic (struct dump_context *ctx,
|
||||
const union vectorlike_header *header)
|
||||
const struct vectorlike_header *header)
|
||||
{
|
||||
#if CHECK_STRUCTS && !defined (HASH_vectorlike_header_785E52047B)
|
||||
# error "vectorlike_header changed. See CHECK_STRUCTS comment in config.h."
|
||||
|
|
@ -2615,7 +2615,7 @@ dump_vectorlike_generic (struct dump_context *ctx,
|
|||
}
|
||||
else
|
||||
{
|
||||
union vectorlike_header out;
|
||||
struct vectorlike_header out;
|
||||
prefix_start_offset = dump_object_start (ctx, header, IGC_OBJ_VECTOR, &out, sizeof (out));
|
||||
DUMP_FIELD_COPY (&out, header, size);
|
||||
offset = dump_object_finish_1 (ctx, &out, sizeof (out));
|
||||
|
|
@ -3107,7 +3107,7 @@ dump_native_comp_unit (struct dump_context *ctx,
|
|||
#endif
|
||||
|
||||
static void
|
||||
fill_pseudovec (union vectorlike_header *header, Lisp_Object item)
|
||||
fill_pseudovec (struct vectorlike_header *header, Lisp_Object item)
|
||||
{
|
||||
struct Lisp_Vector *v = (struct Lisp_Vector *) header;
|
||||
eassert (v->header.size & PSEUDOVECTOR_FLAG);
|
||||
|
|
@ -3118,7 +3118,7 @@ fill_pseudovec (union vectorlike_header *header, Lisp_Object item)
|
|||
|
||||
static dump_off
|
||||
dump_nilled_pseudovec (struct dump_context *ctx,
|
||||
const union vectorlike_header *in)
|
||||
const struct vectorlike_header *in)
|
||||
{
|
||||
START_DUMP_PVEC (ctx, in, struct Lisp_Vector, out);
|
||||
fill_pseudovec (&out->header, Qnil);
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ struct pgtk_touch_point
|
|||
struct scroll_bar
|
||||
{
|
||||
/* These fields are shared by all vectors. */
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* The window we're a scroll bar for. */
|
||||
Lisp_Object window;
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ enum { PROCESS_OPEN_FDS = 6 };
|
|||
|
||||
struct Lisp_Process
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* Name of subprocess terminal. */
|
||||
Lisp_Object tty_name;
|
||||
|
|
|
|||
|
|
@ -469,7 +469,7 @@ extern struct tty_display_info *gpm_tty;
|
|||
struct terminal
|
||||
{
|
||||
/* This is for Lisp; the terminal code does not refer to it. */
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* Parameter alist of this terminal. */
|
||||
Lisp_Object param_alist;
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ struct bc_thread_state {
|
|||
|
||||
struct thread_state
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* The buffer in which the last search was performed, or
|
||||
Qt if the last search was done in a string;
|
||||
|
|
@ -260,7 +260,7 @@ typedef struct
|
|||
/* A mutex as a lisp object. */
|
||||
struct Lisp_Mutex
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* The name of the mutex, or nil. */
|
||||
Lisp_Object name;
|
||||
|
|
@ -291,7 +291,7 @@ XMUTEX (Lisp_Object a)
|
|||
/* A condition variable as a lisp object. */
|
||||
struct Lisp_CondVar
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* The associated mutex. */
|
||||
Lisp_Object mutex;
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ INLINE_HEADER_BEGIN
|
|||
and other goodies for convenience. */
|
||||
struct Lisp_TS_Parser
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
/* A symbol representing the language this parser uses. See the
|
||||
manual for more explanation. */
|
||||
Lisp_Object language_symbol;
|
||||
|
|
@ -87,7 +87,7 @@ struct Lisp_TS_Parser
|
|||
/* A wrapper around a tree-sitter node. */
|
||||
struct Lisp_TS_Node
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
/* This prevents gc from collecting the tree before the node is done
|
||||
with it. TSNode contains a pointer to the tree it belongs to,
|
||||
and the parser object, when collected by gc, will free that
|
||||
|
|
@ -114,7 +114,7 @@ struct Lisp_TS_Node
|
|||
building, so that breaks the build. */
|
||||
struct Lisp_TS_Query
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
/* Language symbol for the query. */
|
||||
Lisp_Object language;
|
||||
/* Source lisp (sexp or string) query. */
|
||||
|
|
|
|||
|
|
@ -485,7 +485,7 @@ extern struct w32_output w32term_display;
|
|||
struct scroll_bar {
|
||||
|
||||
/* This field is shared by all vectors. */
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* The window we're a scroll bar for. */
|
||||
Lisp_Object window;
|
||||
|
|
|
|||
|
|
@ -4392,8 +4392,8 @@ make_parent_window (Lisp_Object window, bool horflag)
|
|||
|
||||
o = XWINDOW (window);
|
||||
p = allocate_window ();
|
||||
memcpy ((char *) p + sizeof (union vectorlike_header),
|
||||
(char *) o + sizeof (union vectorlike_header),
|
||||
memcpy ((char *) p + sizeof (struct vectorlike_header),
|
||||
(char *) o + sizeof (struct vectorlike_header),
|
||||
word_size * VECSIZE (struct window));
|
||||
/* P's buffer slot may change from nil to a buffer... */
|
||||
adjust_window_count (p, 1);
|
||||
|
|
@ -7061,7 +7061,7 @@ from the top of the window. */)
|
|||
|
||||
struct save_window_data
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
Lisp_Object selected_frame;
|
||||
Lisp_Object current_window;
|
||||
Lisp_Object f_current_buffer;
|
||||
|
|
@ -7090,7 +7090,7 @@ struct save_window_data
|
|||
/* This is saved as a Lisp_Vector. */
|
||||
struct saved_window
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
Lisp_Object window, buffer, start, pointm, old_pointm;
|
||||
Lisp_Object pixel_left, pixel_top, pixel_height, pixel_width;
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ struct cursor_pos
|
|||
struct window
|
||||
{
|
||||
/* This is for Lisp; the terminal code does not refer to it. */
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* The frame this window is on. */
|
||||
Lisp_Object frame;
|
||||
|
|
|
|||
|
|
@ -1549,7 +1549,7 @@ extern void x_mark_frame_dirty (struct frame *f);
|
|||
struct scroll_bar
|
||||
{
|
||||
/* These fields are shared by all vectors. */
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* The window we're a scroll bar for. */
|
||||
Lisp_Object window;
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ struct window;
|
|||
|
||||
struct xwidget
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
|
||||
/* Auxiliary data. */
|
||||
Lisp_Object plist;
|
||||
|
|
@ -101,7 +101,7 @@ struct xwidget
|
|||
|
||||
struct xwidget_view
|
||||
{
|
||||
union vectorlike_header header;
|
||||
struct vectorlike_header header;
|
||||
Lisp_Object model;
|
||||
Lisp_Object w;
|
||||
/* Here ends the lisp part. "w" is the marker field. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue