aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-03-05 09:11:25 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-03-05 09:11:25 -0500
commit9f269265215526a5ed88dc26531b5de72e234777 (patch)
tree282b4722ac3c42ce139b30d8b8ef5e8cf8dc9220 /gcc
parent1ebb5fcc6471f5eb9003e615e1bb686b71a0b036 (diff)
downloadgcc-9f269265215526a5ed88dc26531b5de72e234777.zip
gcc-9f269265215526a5ed88dc26531b5de72e234777.tar.gz
gcc-9f269265215526a5ed88dc26531b5de72e234777.tar.bz2
(union sversion): New.
(struct sarray): Maintain multiple versions. (sarray_remove_garbage): Add prototype. From-SVN: r11446
Diffstat (limited to 'gcc')
-rw-r--r--gcc/objc/sarray.h19
1 files changed, 14 insertions, 5 deletions
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 <stddef.h>
+#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