* src/alloc.c, src/lisp.h: Fix minor glitches in recent changes.
This commit is contained in:
parent
52a1ce65d6
commit
a727a0303e
2 changed files with 12 additions and 16 deletions
24
src/alloc.c
24
src/alloc.c
|
@ -5437,7 +5437,8 @@ make_pure_vector (ptrdiff_t len)
|
|||
/* Copy all contents and parameters of TABLE to a new table allocated
|
||||
from pure space, return the purified table. */
|
||||
static struct Lisp_Hash_Table *
|
||||
purecopy_hash_table (struct Lisp_Hash_Table *table) {
|
||||
purecopy_hash_table (struct Lisp_Hash_Table *table)
|
||||
{
|
||||
eassert (NILP (table->weak));
|
||||
eassert (!NILP (table->pure));
|
||||
|
||||
|
@ -5480,14 +5481,12 @@ Does not copy symbols. Copies strings without text properties. */)
|
|||
return purecopy (obj);
|
||||
}
|
||||
|
||||
struct pinned_object
|
||||
/* Pinned objects are marked before every GC cycle. */
|
||||
static struct pinned_object
|
||||
{
|
||||
Lisp_Object object;
|
||||
struct pinned_object *next;
|
||||
};
|
||||
|
||||
/* Pinned objects are marked before every GC cycle. */
|
||||
static struct pinned_object *pinned_objects;
|
||||
} *pinned_objects;
|
||||
|
||||
static Lisp_Object
|
||||
purecopy (Lisp_Object obj)
|
||||
|
@ -5519,13 +5518,13 @@ purecopy (Lisp_Object obj)
|
|||
else if (HASH_TABLE_P (obj))
|
||||
{
|
||||
struct Lisp_Hash_Table *table = XHASH_TABLE (obj);
|
||||
/* We cannot purify hash tables which haven't been defined with
|
||||
/* Do not purify hash tables which haven't been defined with
|
||||
:purecopy as non-nil or are weak - they aren't guaranteed to
|
||||
not change. */
|
||||
if (!NILP (table->weak) || NILP (table->pure))
|
||||
{
|
||||
/* Instead, the hash table is added to the list of pinned objects,
|
||||
and is marked before GC. */
|
||||
/* Instead, add the hash table to the list of pinned objects,
|
||||
so that it will be marked during GC. */
|
||||
struct pinned_object *o = xmalloc (sizeof *o);
|
||||
o->object = obj;
|
||||
o->next = pinned_objects;
|
||||
|
@ -5755,11 +5754,8 @@ compact_undo_list (Lisp_Object list)
|
|||
static void
|
||||
mark_pinned_objects (void)
|
||||
{
|
||||
struct pinned_object *pobj;
|
||||
for (pobj = pinned_objects; pobj; pobj = pobj->next)
|
||||
{
|
||||
mark_object (pobj->object);
|
||||
}
|
||||
for (struct pinned_object *pobj = pinned_objects; pobj; pobj = pobj->next)
|
||||
mark_object (pobj->object);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -1995,8 +1995,8 @@ struct Lisp_Hash_Table
|
|||
hash table size to reduce collisions. */
|
||||
Lisp_Object index;
|
||||
|
||||
/* Non-nil if the table can be purecopied. Any changes the table after
|
||||
purecopy will result in an error. */
|
||||
/* Non-nil if the table can be purecopied. The table cannot be
|
||||
changed afterwards. */
|
||||
Lisp_Object pure;
|
||||
|
||||
/* Only the fields above are traced normally by the GC. The ones below
|
||||
|
|
Loading…
Add table
Reference in a new issue