emacs-diffs
[Top][All Lists]
Advanced

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

master 89350d4 5/6: Use mark_objects elsewhere too


From: Paul Eggert
Subject: master 89350d4 5/6: Use mark_objects elsewhere too
Date: Mon, 31 Aug 2020 03:06:04 -0400 (EDT)

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

    Use mark_objects elsewhere too
    
    * src/alloc.c (mark_vectorlike, mark_face_cache):
    * src/eval.c (mark_specpdl):
    * src/fringe.c (mark_fringe_data):
    * src/keyboard.c (mark_kboards):
    Use mark_objects instead of doing it by hand.
---
 src/alloc.c    | 10 +++-------
 src/eval.c     |  3 +--
 src/fringe.c   |  6 +-----
 src/keyboard.c |  8 +++-----
 4 files changed, 8 insertions(+), 19 deletions(-)

diff --git a/src/alloc.c b/src/alloc.c
index 2f66b5e..6b5bfcb 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -6247,7 +6247,6 @@ mark_vectorlike (union vectorlike_header *header)
 {
   struct Lisp_Vector *ptr = (struct Lisp_Vector *) header;
   ptrdiff_t size = ptr->header.size;
-  ptrdiff_t i;
 
   eassert (!vector_marked_p (ptr));
 
@@ -6262,8 +6261,7 @@ mark_vectorlike (union vectorlike_header *header)
      the number of Lisp_Object fields that we should trace.
      The distinction is used e.g. by Lisp_Process which places extra
      non-Lisp_Object fields at the end of the structure...  */
-  for (i = 0; i < size; i++) /* ...and then mark its elements.  */
-    mark_object (ptr->contents[i]);
+  mark_objects (ptr->contents, size);
 }
 
 /* Like mark_vectorlike but optimized for char-tables (and
@@ -6362,8 +6360,7 @@ mark_face_cache (struct face_cache *c)
 {
   if (c)
     {
-      int i, j;
-      for (i = 0; i < c->used; ++i)
+      for (int i = 0; i < c->used; i++)
        {
          struct face *face = FACE_FROM_ID_OR_NULL (c->f, i);
 
@@ -6372,8 +6369,7 @@ mark_face_cache (struct face_cache *c)
              if (face->font && !vectorlike_marked_p (&face->font->header))
                mark_vectorlike (&face->font->header);
 
-             for (j = 0; j < LFACE_VECTOR_SIZE; ++j)
-               mark_object (face->lface[j]);
+             mark_objects (face->lface, LFACE_VECTOR_SIZE);
            }
        }
     }
diff --git a/src/eval.c b/src/eval.c
index a9bce55..126ee2e 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3974,8 +3974,7 @@ mark_specpdl (union specbinding *first, union specbinding 
*ptr)
            mark_object (backtrace_function (pdl));
            if (nargs == UNEVALLED)
              nargs = 1;
-           while (nargs--)
-             mark_object (backtrace_args (pdl)[nargs]);
+           mark_objects (backtrace_args (pdl), nargs);
          }
          break;
 
diff --git a/src/fringe.c b/src/fringe.c
index c3d64fe..7549669 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1733,11 +1733,7 @@ If nil, also continue lines which are exactly as wide as 
the window.  */);
 void
 mark_fringe_data (void)
 {
-  int i;
-
-  for (i = 0; i < max_fringe_bitmaps; i++)
-    if (!NILP (fringe_faces[i]))
-      mark_object (fringe_faces[i]);
+  mark_objects (fringe_faces, max_fringe_bitmaps);
 }
 
 /* Initialize this module when Emacs starts.  */
diff --git a/src/keyboard.c b/src/keyboard.c
index 5fa58ab..590d183 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -12475,13 +12475,11 @@ keys_of_keyboard (void)
 void
 mark_kboards (void)
 {
-  KBOARD *kb;
-  Lisp_Object *p;
-  for (kb = all_kboards; kb; kb = kb->next_kboard)
+  for (KBOARD *kb = all_kboards; kb; kb = kb->next_kboard)
     {
       if (kb->kbd_macro_buffer)
-        for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++)
-          mark_object (*p);
+       mark_objects (kb->kbd_macro_buffer,
+                     kb->kbd_macro_ptr - kb->kbd_macro_buffer);
       mark_object (KVAR (kb, Voverriding_terminal_local_map));
       mark_object (KVAR (kb, Vlast_command));
       mark_object (KVAR (kb, Vreal_last_command));



reply via email to

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