From 9f269265215526a5ed88dc26531b5de72e234777 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Tue, 5 Mar 1996 09:11:25 -0500 Subject: (union sversion): New. (struct sarray): Maintain multiple versions. (sarray_remove_garbage): Add prototype. From-SVN: r11446 --- gcc/objc/sarray.h | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'gcc/objc') diff --git a/gcc/objc/sarray.h b/gcc/objc/sarray.h index a3ec7a9..7d1ba25 100644 --- a/gcc/objc/sarray.h +++ b/gcc/objc/sarray.h @@ -1,5 +1,5 @@ /* Sparse Arrays for Objective C dispatch tables - Copyright (C) 1993, 1995 Free Software Foundation, Inc. + Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc. Author: Kresten Krab Thorup @@ -42,6 +42,8 @@ extern const char* __objc_sparse3_id; #include +#include "objc/thread.h" + extern int nbuckets; /* for stats */ extern int nindices; extern int narrays; @@ -111,16 +113,21 @@ union sofftype { void * __objc_xrealloc (void *optr, size_t size); void * __objc_xmalloc (size_t size); +union sversion { + int version; + void *next_free; +}; + struct sbucket { void* elems[BUCKET_SIZE]; /* elements stored in array */ - short version; /* used for copy-on-write */ + union sversion version; /* used for copy-on-write */ }; #ifdef OBJC_SPARSE3 struct sindex { struct sbucket* buckets[INDEX_SIZE]; - short version; + union sversion version; /* used for copy-on-write */ }; #endif /* OBJC_SPARSE3 */ @@ -133,7 +140,7 @@ struct sarray { struct sbucket** buckets; #endif /* OBJC_SPARSE2 */ struct sbucket* empty_bucket; - short version; + union sversion version; /* used for copy-on-write */ short ref_count; struct sarray* is_copy_of; size_t capacity; @@ -142,10 +149,12 @@ struct sarray { struct sarray* sarray_new(int, void* default_element); void sarray_free(struct sarray*); struct sarray* sarray_lazy_copy(struct sarray*); -struct sarray* sarray_hard_copy(struct sarray*); /* ... like the name? */ void sarray_realloc(struct sarray*, int new_size); void sarray_at_put(struct sarray*, sidx index, void* elem); void sarray_at_put_safe(struct sarray*, sidx index, void* elem); + +struct sarray* sarray_hard_copy(struct sarray*); /* ... like the name? */ +void sarray_remove_garbage(void); #ifdef PRECOMPUTE_SELECTORS -- cgit v1.1