diff options
author | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-27 00:26:52 +0000 |
---|---|---|
committer | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-27 00:26:52 +0000 |
commit | 7d60cc603c75cb116460c7cc446891bae4462cb2 (patch) | |
tree | 4348e45b7dfeeb6d8cce2f6f38df5cb802f97b60 /gcc/ggc-page.c | |
parent | 486ca58f07fc2bc1f49ed571f507d792e21b4f1b (diff) | |
download | gcc-7d60cc603c75cb116460c7cc446891bae4462cb2.tar.gz |
2003-10-26 Daniel Berlin <dberlin@dberlin.org>
* ggc-zone.c: New file, zone allocating collector.
* configure: Accept zone option for --with-gc
* configure.in: Ditto.
* ggc.h (ggc_pch_count_object): Pass bool indicating
stringiness. Update all callers.
(ggc_pch_alloc_object): Ditto.
(ggc_pch_write_object): Ditto.
(ggc_alloc_rtx): Use typed allocation, since all RTX's are of a single
type.
(ggc_alloc_rtvec): Ditto.
(ggc_alloc_tree): Use zone allocation, since some things using this macro
aren't a single typecode.
* ggc-none.c (ggc_alloc_typed): New function.
(ggc_alloc_zone): Ditto.
* ggc-page.c: Ditto on both functions.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72971 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ggc-page.c')
-rw-r--r-- | gcc/ggc-page.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c index 71268ca34da..198b73364bf 100644 --- a/gcc/ggc-page.c +++ b/gcc/ggc-page.c @@ -469,7 +469,10 @@ static void poison_pages (void); void debug_print_page_list (int); static void push_depth (unsigned int); static void push_by_depth (page_entry *, unsigned long *); - +struct alloc_zone *rtl_zone = NULL; +struct alloc_zone *tree_zone = NULL; +struct alloc_zone *garbage_zone = NULL; + /* Push an entry onto G.depth. */ inline static void @@ -1021,6 +1024,22 @@ static unsigned char size_lookup[257] = 8 }; +/* Typed allocation function. Does nothing special in this collector. */ + +void * +ggc_alloc_typed (enum gt_types_enum type ATTRIBUTE_UNUSED, size_t size) +{ + return ggc_alloc (size); +} + +/* Zone allocation function. Does nothing special in this collector. */ + +void * +ggc_alloc_zone (size_t size, struct alloc_zone *zone ATTRIBUTE_UNUSED) +{ + return ggc_alloc (size); +} + /* Allocate a chunk of memory of SIZE bytes. Its contents are undefined. */ void * @@ -1894,7 +1913,7 @@ init_ggc_pch (void) void ggc_pch_count_object (struct ggc_pch_data *d, void *x ATTRIBUTE_UNUSED, - size_t size) + size_t size, bool is_string ATTRIBUTE_UNUSED) { unsigned order; @@ -1937,7 +1956,7 @@ ggc_pch_this_base (struct ggc_pch_data *d, void *base) char * ggc_pch_alloc_object (struct ggc_pch_data *d, void *x ATTRIBUTE_UNUSED, - size_t size) + size_t size, bool is_string ATTRIBUTE_UNUSED) { unsigned order; char *result; @@ -1966,7 +1985,7 @@ ggc_pch_prepare_write (struct ggc_pch_data *d ATTRIBUTE_UNUSED, void ggc_pch_write_object (struct ggc_pch_data *d ATTRIBUTE_UNUSED, FILE *f, void *x, void *newx ATTRIBUTE_UNUSED, - size_t size) + size_t size, bool is_string ATTRIBUTE_UNUSED) { unsigned order; static const char emptyBytes[256]; |