Remove struct Lisp_Kboard_Objfwd

* src/lisp.h (struct Lisp_Kboard_Objfwd): Deleted ...
(struct Lisp_Fwd): ... replaced with field kbdoffset.
(DEFVAR_KBOARD): Use new field.
* src/data.c (XKBOARD_OFFSET): Renamed from XKBOARD_OBJFWD.
(do_symval_forwarding, store_symval_forwarding
(set_default_internal): Use it .
This commit is contained in:
Helmut Eller 2024-06-23 16:36:13 +02:00
parent d109bcf86e
commit 163dd21e73
2 changed files with 10 additions and 19 deletions

View file

@ -59,11 +59,11 @@ XBOOLVAR (lispfwd a)
eassert (BOOLFWDP (a));
return a->u.boolvar;
}
static struct Lisp_Kboard_Objfwd const *
XKBOARD_OBJFWD (lispfwd a)
static int
XKBOARD_OFFSET (lispfwd a)
{
eassert (KBOARD_OBJFWDP (a));
return &a->u.kboardobjfwd;
return a->u.kbdoffset;
}
static intmax_t *
XINTVAR (lispfwd a)
@ -1345,7 +1345,7 @@ do_symval_forwarding (lispfwd valcontents)
XBUFFER_OBJFWD (valcontents)->offset);
case Lisp_Fwd_Kboard_Obj:
return *(Lisp_Object *) (XKBOARD_OBJFWD (valcontents)->offset
return *(Lisp_Object *) (XKBOARD_OFFSET (valcontents)
+ (char *) kboard_for_bindings ());
default: emacs_abort ();
}
@ -1496,7 +1496,7 @@ store_symval_forwarding (lispfwd valcontents, Lisp_Object newval,
case Lisp_Fwd_Kboard_Obj:
{
char *base = (char *) kboard_for_bindings ();
char *p = base + XKBOARD_OBJFWD (valcontents)->offset;
char *p = base + XKBOARD_OFFSET (valcontents);
*(Lisp_Object *) p = newval;
}
break;
@ -2081,7 +2081,7 @@ set_default_internal (Lisp_Object symbol, Lisp_Object value,
{
char *base = (char *) (where ? where
: kboard_for_bindings ());
char *p = base + XKBOARD_OBJFWD (valcontents)->offset;
char *p = base + XKBOARD_OFFSET (valcontents);
*(Lisp_Object *) p = value;
}
else

View file

@ -3105,13 +3105,6 @@ struct Lisp_Buffer_Local_Value
Lisp_Object valcell;
};
/* Like Lisp_Objfwd except that value lives in a slot in the
current kboard. */
struct Lisp_Kboard_Objfwd
{
int offset;
};
struct Lisp_Fwd
{
enum Lisp_Fwd_Type type;
@ -3121,7 +3114,7 @@ struct Lisp_Fwd
bool *boolvar;
Lisp_Object *objvar;
struct Lisp_Buffer_Objfwd bufobjfwd;
struct Lisp_Kboard_Objfwd kboardobjfwd;
int kbdoffset;
} u;
};
@ -3510,14 +3503,12 @@ extern void defvar_kboard (struct Lisp_Fwd const *, char const *);
defvar_int (&i_fwd, lname); \
} while (false)
#define DEFVAR_KBOARD(lname, vname, doc) \
do \
{ \
do { \
static struct Lisp_Fwd const ko_fwd \
= { Lisp_Fwd_Kboard_Obj, \
.u.kboardobjfwd = {offsetof (KBOARD, vname##_)}}; \
.u.kbdoffset = offsetof (KBOARD, vname##_)}; \
defvar_kboard (&ko_fwd, lname); \
} \
while (false)
} while (false)
/* Elisp uses multiple stacks: