From 6d42135f0ef647a41de26577dc62c3aca23c0865 Mon Sep 17 00:00:00 2001 From: Helmut Eller Date: Sun, 23 Jun 2024 16:36:13 +0200 Subject: [PATCH 5/6] 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 . --- src/data.c | 12 ++++++------ src/lisp.h | 17 ++++------------- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/src/data.c b/src/data.c index af4802f54a0..9f344474692 100644 --- a/src/data.c +++ b/src/data.c @@ -61,11 +61,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) @@ -1346,7 +1346,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 (); } @@ -1497,7 +1497,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; @@ -2083,7 +2083,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 diff --git a/src/lisp.h b/src/lisp.h index d0eef3e4aa1..2dc3530337b 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3167,13 +3167,6 @@ #define INT_TO_INTEGER(expr) \ 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; @@ -3183,7 +3176,7 @@ #define INT_TO_INTEGER(expr) \ bool *boolvar; Lisp_Object *objvar; struct Lisp_Buffer_Objfwd bufobjfwd; - struct Lisp_Kboard_Objfwd kboardobjfwd; + int kbdoffset; } u; }; @@ -3608,14 +3601,12 @@ #define DEFVAR_INT(lname, vname, doc) \ 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: -- 2.39.2