emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 9751250adb 2/2: Port struct Lisp_Subr to C99


From: Paul Eggert
Subject: master 9751250adb 2/2: Port struct Lisp_Subr to C99
Date: Mon, 18 Apr 2022 22:47:44 -0400 (EDT)

branch: master
commit 9751250adb1333da55fcadb363266214d0782bb9
Author: Paul Eggert <eggert@cs.ucla.edu>
Commit: Paul Eggert <eggert@cs.ucla.edu>

    Port struct Lisp_Subr to C99
    
    * src/lisp.h (struct Lisp_Subr): Don’t use an anonymous union,
    a feature missing from C99 and not supported by older OS X.
    All uses changed.
---
 src/alloc.c   | 2 +-
 src/comp.c    | 2 +-
 src/data.c    | 6 +++---
 src/eval.c    | 2 +-
 src/lisp.h    | 6 +++---
 src/pdumper.c | 4 ++--
 6 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/alloc.c b/src/alloc.c
index 8fd981a51f..4fc4044587 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -6894,7 +6894,7 @@ process_mark_stack (ptrdiff_t base_sp)
                  {
                    set_vector_marked (ptr);
                    struct Lisp_Subr *subr = XSUBR (obj);
-                   mark_stack_push_value (subr->native_intspec);
+                   mark_stack_push_value (subr->intspec.native);
                    mark_stack_push_value (subr->command_modes);
                    mark_stack_push_value (subr->native_comp_u);
                    mark_stack_push_value (subr->lambda_list);
diff --git a/src/comp.c b/src/comp.c
index 398f35ddb0..66a7ab789a 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -5439,7 +5439,7 @@ make_subr (Lisp_Object symbol_name, Lisp_Object minarg, 
Lisp_Object maxarg,
   x->s.min_args = XFIXNUM (minarg);
   x->s.max_args = FIXNUMP (maxarg) ? XFIXNUM (maxarg) : MANY;
   x->s.symbol_name = xstrdup (SSDATA (symbol_name));
-  x->s.native_intspec = intspec;
+  x->s.intspec.native = intspec;
   x->s.command_modes = command_modes;
   x->s.doc = XFIXNUM (doc_idx);
 #ifdef HAVE_NATIVE_COMP
diff --git a/src/data.c b/src/data.c
index f06b561dcc..72af8a6648 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1090,10 +1090,10 @@ Value, if non-nil, is a list (interactive SPEC).  */)
 
   if (SUBRP (fun))
     {
-      if (SUBR_NATIVE_COMPILEDP (fun) && !NILP (XSUBR (fun)->native_intspec))
-       return XSUBR (fun)->native_intspec;
+      if (SUBR_NATIVE_COMPILEDP (fun) && !NILP (XSUBR (fun)->intspec.native))
+       return XSUBR (fun)->intspec.native;
 
-      const char *spec = XSUBR (fun)->intspec;
+      const char *spec = XSUBR (fun)->intspec.string;
       if (spec)
        return list2 (Qinteractive,
                      (*spec != '(') ? build_string (spec) :
diff --git a/src/eval.c b/src/eval.c
index 6b1e12b823..37bc03465c 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2055,7 +2055,7 @@ then strings and vectors are not accepted.  */)
   /* Emacs primitives are interactive if their DEFUN specifies an
      interactive spec.  */
   if (SUBRP (fun))
-    return XSUBR (fun)->intspec ? Qt : if_prop;
+    return XSUBR (fun)->intspec.string ? Qt : if_prop;
 
   /* Bytecode objects are interactive if they are long enough to
      have an element whose index is COMPILED_INTERACTIVE, which is
diff --git a/src/lisp.h b/src/lisp.h
index f723876634..fb43bfa791 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2151,9 +2151,9 @@ struct Lisp_Subr
     short min_args, max_args;
     const char *symbol_name;
     union {
-      const char *intspec;
-      Lisp_Object native_intspec;
-    };
+      const char *string;
+      Lisp_Object native;
+    } intspec;
     Lisp_Object command_modes;
     EMACS_INT doc;
 #ifdef HAVE_NATIVE_COMP
diff --git a/src/pdumper.c b/src/pdumper.c
index 24393e0366..0b74e6431f 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -2876,13 +2876,13 @@ dump_subr (struct dump_context *ctx, const struct 
Lisp_Subr *subr)
       dump_remember_cold_op (ctx,
                              COLD_OP_NATIVE_SUBR,
                             make_lisp_ptr ((void *) subr, Lisp_Vectorlike));
-      dump_field_lv (ctx, &out, subr, &subr->native_intspec, WEIGHT_NORMAL);
+      dump_field_lv (ctx, &out, subr, &subr->intspec.native, WEIGHT_NORMAL);
       dump_field_lv (ctx, &out, subr, &subr->command_modes, WEIGHT_NORMAL);
     }
   else
     {
       dump_field_emacs_ptr (ctx, &out, subr, &subr->symbol_name);
-      dump_field_emacs_ptr (ctx, &out, subr, &subr->intspec);
+      dump_field_emacs_ptr (ctx, &out, subr, &subr->intspec.string);
       dump_field_emacs_ptr (ctx, &out, subr, &subr->command_modes);
     }
   DUMP_FIELD_COPY (&out, subr, doc);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]