From d685c974fe6ef429c0019254ed2fd65d347ceabc Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Tue, 24 Aug 2004 00:46:11 +0000 Subject: [PATCH] ggc-zone.c (struc alloc_chunk): Rearrange flag bits and SIZE. * ggc-zone.c (struc alloc_chunk): Rearrange flag bits and SIZE. Remove TYPECODE. (ggc_alloc_zone_1): Mark TYPE as unused. Don't save it in the chunk. From-SVN: r86456 --- gcc/ChangeLog | 6 ++++++ gcc/ggc-zone.c | 15 ++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 796a655c246..0e0cc94fa98 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-08-23 Daniel Jacobowitz + + * ggc-zone.c (struc alloc_chunk): Rearrange flag bits and SIZE. + Remove TYPECODE. + (ggc_alloc_zone_1): Mark TYPE as unused. Don't save it in the chunk. + 2004-08-23 Eric Christopher * defaults.h (VECTOR_MODE_SUPPORTED_P): Remove macro. diff --git a/gcc/ggc-zone.c b/gcc/ggc-zone.c index fc605f49045..86fbc281718 100644 --- a/gcc/ggc-zone.c +++ b/gcc/ggc-zone.c @@ -146,10 +146,13 @@ struct alloc_chunk { unsigned int magic; #endif unsigned int type:1; - unsigned int typecode:14; - unsigned int large:1; - unsigned int size:15; unsigned int mark:1; + unsigned char large; + unsigned short size; + /* Right now, on 32-bit hosts we don't have enough room to save the + typecode unless we make the one remaining flag into a bitfield. + There's a performance cost to that, so we don't do it until we're + ready to use the type information for something. */ union { struct alloc_chunk *next_free; char data[1]; @@ -594,7 +597,8 @@ free_chunk (struct alloc_chunk *chunk, size_t size, struct alloc_zone *zone) /* Allocate a chunk of memory of SIZE bytes. */ static void * -ggc_alloc_zone_1 (size_t orig_size, struct alloc_zone *zone, short type +ggc_alloc_zone_1 (size_t orig_size, struct alloc_zone *zone, + short type ATTRIBUTE_UNUSED MEM_STAT_DECL) { size_t bin = 0; @@ -696,7 +700,8 @@ ggc_alloc_zone_1 (size_t orig_size, struct alloc_zone *zone, short type #endif chunk->type = 1; chunk->mark = 0; - chunk->typecode = type; + /* We could save TYPE in the chunk, but we don't use that for + anything yet. */ result = chunk->u.data; #ifdef ENABLE_GC_CHECKING