summaryrefslogtreecommitdiff
path: root/gcc/ggc-page.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2006-06-19 18:57:28 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2006-06-19 18:57:28 +0000
commit1c2a6a66460830e85bf5b02ac247cdd45e0908fd (patch)
tree3adcf0d1e3be8e762c7a7dd7b1813c29b00baa9d /gcc/ggc-page.c
parent30b9be29fe385497f6ae4e27d4e05a4931acba40 (diff)
downloadgcc-1c2a6a66460830e85bf5b02ac247cdd45e0908fd.tar.gz
2006-06-19 Richard Guenther <rguenther@suse.de>
* ggc-page.c (extra_order_size_tab): Add entries with size of struct function and basic_block. (size_lookup): Extend to cover sizes up to 511. (ggc_alloc_stat): Adjust user. (ggc_pch_count_object): Likewise. (ggc_pch_alloc_object): Likewise. (ggc_pch_write_object): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114783 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ggc-page.c')
-rw-r--r--gcc/ggc-page.c37
1 files changed, 27 insertions, 10 deletions
diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c
index ca11fd7ae79..7b1415b785f 100644
--- a/gcc/ggc-page.c
+++ b/gcc/ggc-page.c
@@ -191,6 +191,8 @@ static const size_t extra_order_size_table[] = {
sizeof (struct tree_parm_decl),
sizeof (struct tree_var_decl),
sizeof (struct tree_list),
+ sizeof (struct function),
+ sizeof (struct basic_block_def),
TREE_EXP_SIZE (2),
RTL_SIZE (2), /* MEM, PLUS, etc. */
RTL_SIZE (9), /* INSN */
@@ -1022,7 +1024,7 @@ 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[257] =
+static unsigned char size_lookup[511] =
{
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,
@@ -1040,7 +1042,22 @@ static unsigned char size_lookup[257] =
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8
+ 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9
};
/* Typed allocation function. Does nothing special in this collector. */
@@ -1061,14 +1078,14 @@ ggc_alloc_stat (size_t size MEM_STAT_DECL)
struct page_entry *entry;
void *result;
- if (size <= 256)
+ if (size < 512)
{
order = size_lookup[size];
object_size = OBJECT_SIZE (order);
}
else
{
- order = 9;
+ order = 10;
while (size > (object_size = OBJECT_SIZE (order)))
order++;
}
@@ -2023,11 +2040,11 @@ ggc_pch_count_object (struct ggc_pch_data *d, void *x ATTRIBUTE_UNUSED,
{
unsigned order;
- if (size <= 256)
+ if (size < 512)
order = size_lookup[size];
else
{
- order = 9;
+ order = 10;
while (size > OBJECT_SIZE (order))
order++;
}
@@ -2068,11 +2085,11 @@ ggc_pch_alloc_object (struct ggc_pch_data *d, void *x ATTRIBUTE_UNUSED,
unsigned order;
char *result;
- if (size <= 256)
+ if (size < 512)
order = size_lookup[size];
else
{
- order = 9;
+ order = 10;
while (size > OBJECT_SIZE (order))
order++;
}
@@ -2097,11 +2114,11 @@ ggc_pch_write_object (struct ggc_pch_data *d ATTRIBUTE_UNUSED,
unsigned order;
static const char emptyBytes[256];
- if (size <= 256)
+ if (size < 512)
order = size_lookup[size];
else
{
- order = 9;
+ order = 10;
while (size > OBJECT_SIZE (order))
order++;
}