aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorPip Cet2024-08-20 19:02:29 +0000
committerStefan Kangas2024-12-12 22:48:12 +0100
commite1e101c6c10b6e5110c2c47946d477a752828a78 (patch)
tree92f78b118b1b7ac548e0acf356e9d14503a85c1c /src/alloc.c
parent5ec86966638885a0f8df8afa28a01ca103ad2a49 (diff)
downloademacs-e1e101c6c10b6e5110c2c47946d477a752828a78.tar.gz
emacs-e1e101c6c10b6e5110c2c47946d477a752828a78.zip
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.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c47
1 files changed, 0 insertions, 47 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
3898 3898
3899static struct symbol_block *symbol_block; 3899static struct symbol_block *symbol_block;
3900static int symbol_block_index = SYMBOL_BLOCK_SIZE; 3900static int symbol_block_index = SYMBOL_BLOCK_SIZE;
3901/* Pointer to the first symbol_block that contains pinned symbols.
3902 Tests for 24.4 showed that at dump-time, Emacs contains about 15K symbols,
3903 10K of which are pinned (and all but 250 of them are interned in obarray),
3904 whereas a "typical session" has in the order of 30K symbols.
3905 `symbol_block_pinned' lets mark_pinned_symbols scan only 15K symbols rather
3906 than 30K to find the 10K symbols we need to mark. */
3907static struct symbol_block *symbol_block_pinned;
3908 3901
3909/* List of free symbols. */ 3902/* List of free symbols. */
3910 3903
@@ -3930,7 +3923,6 @@ init_symbol (Lisp_Object val, Lisp_Object name)
3930 p->u.s.interned = SYMBOL_UNINTERNED; 3923 p->u.s.interned = SYMBOL_UNINTERNED;
3931 p->u.s.trapped_write = SYMBOL_UNTRAPPED_WRITE; 3924 p->u.s.trapped_write = SYMBOL_UNTRAPPED_WRITE;
3932 p->u.s.declared_special = false; 3925 p->u.s.declared_special = false;
3933 p->u.s.pinned = false;
3934} 3926}
3935 3927
3936DEFUN ("make-symbol", Fmake_symbol, Smake_symbol, 1, 1, 0, 3928DEFUN ("make-symbol", Fmake_symbol, Smake_symbol, 1, 1, 0,
@@ -5666,13 +5658,6 @@ Does not copy symbols. Copies strings without text properties. */)
5666 return purecopy (obj); 5658 return purecopy (obj);
5667} 5659}
5668 5660
5669/* Pinned objects are marked before every GC cycle. */
5670static struct pinned_object
5671{
5672 Lisp_Object object;
5673 struct pinned_object *next;
5674} *pinned_objects;
5675
5676static Lisp_Object 5661static Lisp_Object
5677purecopy (Lisp_Object obj) 5662purecopy (Lisp_Object obj)
5678{ 5663{
@@ -5882,13 +5867,6 @@ compact_undo_list (Lisp_Object list)
5882 return list; 5867 return list;
5883} 5868}
5884 5869
5885static void
5886mark_pinned_objects (void)
5887{
5888 for (struct pinned_object *pobj = pinned_objects; pobj; pobj = pobj->next)
5889 mark_object (pobj->object);
5890}
5891
5892#if defined HAVE_ANDROID && !defined (__clang__) 5870#if defined HAVE_ANDROID && !defined (__clang__)
5893 5871
5894/* The Android gcc is broken and needs the following version of 5872/* The Android gcc is broken and needs the following version of
@@ -5913,29 +5891,6 @@ android_make_lisp_symbol (struct Lisp_Symbol *sym)
5913#endif 5891#endif
5914 5892
5915static void 5893static void
5916mark_pinned_symbols (void)
5917{
5918 struct symbol_block *sblk;
5919 int lim;
5920 struct Lisp_Symbol *sym, *end;
5921
5922 if (symbol_block_pinned == symbol_block)
5923 lim = symbol_block_index;
5924 else
5925 lim = SYMBOL_BLOCK_SIZE;
5926
5927 for (sblk = symbol_block_pinned; sblk; sblk = sblk->next)
5928 {
5929 sym = sblk->symbols, end = sym + lim;
5930 for (; sym < end; ++sym)
5931 if (sym->u.s.pinned)
5932 mark_object (make_lisp_symbol (sym));
5933
5934 lim = SYMBOL_BLOCK_SIZE;
5935 }
5936}
5937
5938static void
5939visit_vectorlike_root (struct gc_root_visitor visitor, 5894visit_vectorlike_root (struct gc_root_visitor visitor,
5940 struct Lisp_Vector *ptr, 5895 struct Lisp_Vector *ptr,
5941 enum gc_root_type type) 5896 enum gc_root_type type)
@@ -6198,8 +6153,6 @@ garbage_collect (void)
6198 struct gc_root_visitor visitor = { .visit = mark_object_root_visitor }; 6153 struct gc_root_visitor visitor = { .visit = mark_object_root_visitor };
6199 visit_static_gc_roots (visitor); 6154 visit_static_gc_roots (visitor);
6200 6155
6201 mark_pinned_objects ();
6202 mark_pinned_symbols ();
6203 mark_lread (); 6156 mark_lread ();
6204 mark_terminals (); 6157 mark_terminals ();
6205 mark_kboards (); 6158 mark_kboards ();