diff options
author | Nick Clifton <nickc@redhat.com> | 2006-07-25 15:33:50 +0000 |
---|---|---|
committer | Nick Clifton <nickc@gcc.gnu.org> | 2006-07-25 15:33:50 +0000 |
commit | 6583cf153de60fde983298105321deb3e5b0b3cd (patch) | |
tree | 097df08f8c404a8e292b7d34a666becdc2a914d8 /gcc | |
parent | 2daec0f0854b1517fa6a2eb44762dda8cb8000ed (diff) | |
download | gcc-6583cf153de60fde983298105321deb3e5b0b3cd.zip gcc-6583cf153de60fde983298105321deb3e5b0b3cd.tar.gz gcc-6583cf153de60fde983298105321deb3e5b0b3cd.tar.bz2 |
ggc-page.c (NUM_SIZE_LOOKUP): New constant - the length of the size_lookup[] array.
* ggc-page.c (NUM_SIZE_LOOKUP): New constant - the length of the size_lookup[] array.
(ggc_alloc_stat): Use NUM_SIZE_LOOKUP.
(ggc_pch_count_object): Likewise.
(ggc_pch_alloc_object): Likewise.
(ggc_pch_write_object): Likewise.
(init_ggc): Do not attempt to initialize entries in the size_lookup[] array
for objects whose size is greater than than the length of the array.
From-SVN: r115738
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/ggc-page.c | 19 |
2 files changed, 23 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 69a963c..636ec23 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2006-07-25 Nick Clifton <nickc@redhat.com> + + * ggc-page.c (NUM_SIZE_LOOKUP): New constant - the length of the + size_lookup[] array. + (ggc_alloc_stat): Use NUM_SIZE_LOOKUP. + (ggc_pch_count_object): Likewise. + (ggc_pch_alloc_object): Likewise. + (ggc_pch_write_object): Likewise. + (init_ggc): Do not attempt to initialize entries in the + size_lookup[] array for objects whose size is greater than than + the length of the array. + 2006-07-25 Daniel Jacobowitz <dan@codesourcery.com> * dbxout.c (output_used_types_helper): Push queued types diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c index 751a0d1..5d88033 100644 --- a/gcc/ggc-page.c +++ b/gcc/ggc-page.c @@ -1029,8 +1029,8 @@ release_pages (void) /* This table provides a fast way to determine ceil(log_2(size)) for allocation requests. The minimum allocation size is eight bytes. */ - -static unsigned char size_lookup[512] = +#define NUM_SIZE_LOOKUP 512 +static unsigned char size_lookup[NUM_SIZE_LOOKUP] = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, @@ -1084,7 +1084,7 @@ ggc_alloc_stat (size_t size MEM_STAT_DECL) struct page_entry *entry; void *result; - if (size < 512) + if (size < NUM_SIZE_LOOKUP) { order = size_lookup[size]; object_size = OBJECT_SIZE (order); @@ -1534,8 +1534,11 @@ init_ggc (void) int o; int i; - o = size_lookup[OBJECT_SIZE (order)]; - for (i = OBJECT_SIZE (order); size_lookup [i] == o; --i) + i = OBJECT_SIZE (order); + if (i >= NUM_SIZE_LOOKUP) + continue; + + for (o = size_lookup[i]; o == size_lookup [i]; --i) size_lookup[i] = order; } @@ -2046,7 +2049,7 @@ ggc_pch_count_object (struct ggc_pch_data *d, void *x ATTRIBUTE_UNUSED, { unsigned order; - if (size < 512) + if (size < NUM_SIZE_LOOKUP) order = size_lookup[size]; else { @@ -2091,7 +2094,7 @@ ggc_pch_alloc_object (struct ggc_pch_data *d, void *x ATTRIBUTE_UNUSED, unsigned order; char *result; - if (size < 512) + if (size < NUM_SIZE_LOOKUP) order = size_lookup[size]; else { @@ -2120,7 +2123,7 @@ ggc_pch_write_object (struct ggc_pch_data *d ATTRIBUTE_UNUSED, unsigned order; static const char emptyBytes[256]; - if (size < 512) + if (size < NUM_SIZE_LOOKUP) order = size_lookup[size]; else { |