emacs-diffs
[Top][All Lists]
Advanced

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

scratch/no-purespace e1e101c6c10 08/41: Pure storage removal: Remove sup


From: Stefan Kangas
Subject: scratch/no-purespace e1e101c6c10 08/41: Pure storage removal: Remove support for pinned objects
Date: Thu, 12 Dec 2024 16:57:30 -0500 (EST)

branch: scratch/no-purespace
commit e1e101c6c10b6e5110c2c47946d477a752828a78
Author: Pip Cet <pipcet@protonmail.com>
Commit: Stefan Kangas <stefankangas@gmail.com>

    Pure storage removal: Remove support for pinned objects
    
    * src/alloc.c (symbol_block_pinned): Remove variable.
    (init_symbol): Don't initialize 'pinned flag'.
    (pinned_objects): Remove variable.
    (mark_pinned_objects, mark_pinned_symbols): Remove functions.
    (garbage_collect): Don't call 'mark_pinned_objects',
    'mark_pinned_symbols'.
    * src/lisp.h (struct Lisp_Symbol): Remove 'pinned' flag.
    * src/pdumper.c (dump_symbol): Remove 'pinned' flag from dump.
---
 src/alloc.c   | 47 -----------------------------------------------
 src/lisp.h    |  3 ---
 src/pdumper.c |  1 -
 3 files changed, 51 deletions(-)

diff --git a/src/alloc.c b/src/alloc.c
index ff491719547..ea142fb1076 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3898,13 +3898,6 @@ struct symbol_block
 
 static struct symbol_block *symbol_block;
 static int symbol_block_index = SYMBOL_BLOCK_SIZE;
-/* Pointer to the first symbol_block that contains pinned symbols.
-   Tests for 24.4 showed that at dump-time, Emacs contains about 15K symbols,
-   10K of which are pinned (and all but 250 of them are interned in obarray),
-   whereas a "typical session" has in the order of 30K symbols.
-   `symbol_block_pinned' lets mark_pinned_symbols scan only 15K symbols rather
-   than 30K to find the 10K symbols we need to mark.  */
-static struct symbol_block *symbol_block_pinned;
 
 /* List of free symbols.  */
 
@@ -3930,7 +3923,6 @@ init_symbol (Lisp_Object val, Lisp_Object name)
   p->u.s.interned = SYMBOL_UNINTERNED;
   p->u.s.trapped_write = SYMBOL_UNTRAPPED_WRITE;
   p->u.s.declared_special = false;
-  p->u.s.pinned = false;
 }
 
 DEFUN ("make-symbol", Fmake_symbol, Smake_symbol, 1, 1, 0,
@@ -5666,13 +5658,6 @@ Does not copy symbols.  Copies strings without text 
properties.  */)
     return purecopy (obj);
 }
 
-/* Pinned objects are marked before every GC cycle.  */
-static struct pinned_object
-{
-  Lisp_Object object;
-  struct pinned_object *next;
-} *pinned_objects;
-
 static Lisp_Object
 purecopy (Lisp_Object obj)
 {
@@ -5882,13 +5867,6 @@ compact_undo_list (Lisp_Object list)
   return list;
 }
 
-static void
-mark_pinned_objects (void)
-{
-  for (struct pinned_object *pobj = pinned_objects; pobj; pobj = pobj->next)
-    mark_object (pobj->object);
-}
-
 #if defined HAVE_ANDROID && !defined (__clang__)
 
 /* The Android gcc is broken and needs the following version of
@@ -5912,29 +5890,6 @@ android_make_lisp_symbol (struct Lisp_Symbol *sym)
 
 #endif
 
-static void
-mark_pinned_symbols (void)
-{
-  struct symbol_block *sblk;
-  int lim;
-  struct Lisp_Symbol *sym, *end;
-
-  if (symbol_block_pinned == symbol_block)
-    lim = symbol_block_index;
-  else
-    lim = SYMBOL_BLOCK_SIZE;
-
-  for (sblk = symbol_block_pinned; sblk; sblk = sblk->next)
-    {
-      sym = sblk->symbols, end = sym + lim;
-      for (; sym < end; ++sym)
-       if (sym->u.s.pinned)
-         mark_object (make_lisp_symbol (sym));
-
-      lim = SYMBOL_BLOCK_SIZE;
-    }
-}
-
 static void
 visit_vectorlike_root (struct gc_root_visitor visitor,
                        struct Lisp_Vector *ptr,
@@ -6198,8 +6153,6 @@ garbage_collect (void)
   struct gc_root_visitor visitor = { .visit = mark_object_root_visitor };
   visit_static_gc_roots (visitor);
 
-  mark_pinned_objects ();
-  mark_pinned_symbols ();
   mark_lread ();
   mark_terminals ();
   mark_kboards ();
diff --git a/src/lisp.h b/src/lisp.h
index 93469a5c63e..1370fe7e30f 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -797,9 +797,6 @@ struct Lisp_Symbol
         special (with `defvar' etc), and shouldn't be lexically bound.  */
       bool_bf declared_special : 1;
 
-      /* True if pointed to from purespace and hence can't be GC'd.  */
-      bool_bf pinned : 1;
-
       /* The symbol's name, as a Lisp string.  */
       Lisp_Object name;
 
diff --git a/src/pdumper.c b/src/pdumper.c
index 1d45e37d67e..5a55dccf09f 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -2502,7 +2502,6 @@ dump_symbol (struct dump_context *ctx,
   DUMP_FIELD_COPY (&out, symbol, u.s.trapped_write);
   DUMP_FIELD_COPY (&out, symbol, u.s.interned);
   DUMP_FIELD_COPY (&out, symbol, u.s.declared_special);
-  DUMP_FIELD_COPY (&out, symbol, u.s.pinned);
   dump_field_lv (ctx, &out, symbol, &symbol->u.s.name, WEIGHT_STRONG);
   switch (symbol->u.s.redirect)
     {



reply via email to

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