From ee79d61567bd4346611f2386ac601f8aba4c5bf9 Mon Sep 17 00:00:00 2001 From: tomo Date: Tue, 30 May 2000 12:10:11 +0000 Subject: [PATCH] (alloc_older_lcrecord): New function in UTF-2000. (mark_object): Don't check older object in UTF-2000. --- src/alloc.c | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/alloc.c b/src/alloc.c index f695a71..92a11a4 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -400,6 +400,37 @@ alloc_lcrecord (size_t size, const struct lrecord_implementation *implementation return lcheader; } +#ifdef UTF2000 +void * +alloc_older_lcrecord (size_t size, + const struct lrecord_implementation *implementation) +{ + struct lcrecord_header *lcheader; + + type_checking_assert + ((implementation->static_size == 0 ? + implementation->size_in_bytes_method != NULL : + implementation->static_size == size) + && + (! implementation->basic_p) + && + (! (implementation->hash == NULL && implementation->equal != NULL))); + + lcheader = (struct lcrecord_header *) allocate_lisp_storage (size); + set_lheader_older_implementation (&lcheader->lheader, implementation); + lcheader->next = all_older_lcrecords; +#if 1 /* mly prefers to see small ID numbers */ + lcheader->uid = lrecord_uid_counter++; +#else /* jwz prefers to see real addrs */ + lcheader->uid = (int) &lcheader; +#endif + lcheader->free = 0; + all_older_lcrecords = lcheader; + INCREMENT_CONS_COUNTER (size, implementation->name); + return lcheader; +} +#endif + #if 0 /* Presently unused */ /* Very, very poor man's EGC? * This may be slow and thrash pages all over the place. @@ -2521,7 +2552,11 @@ mark_object (Lisp_Object obj) /* All c_readonly objects have their mark bit set, so that we only need to check the mark bit here. */ - if (! MARKED_RECORD_HEADER_P (lheader)) + if ( (!MARKED_RECORD_HEADER_P (lheader)) +#ifdef UTF2000 + && (!OLDER_RECORD_HEADER_P (lheader)) +#endif + ) { MARK_RECORD_HEADER (lheader); -- 1.7.10.4