]> git.ipfire.org Git - thirdparty/gcc.git/commit - libcpp/ChangeLog
Reduce memory waste due to non-power-of-2 allocs
authorTom Tromey <tromey@redhat.com>
Mon, 17 Oct 2011 10:00:07 +0000 (10:00 +0000)
committerDodji Seketeli <dodji@gcc.gnu.org>
Mon, 17 Oct 2011 10:00:07 +0000 (12:00 +0200)
commitb9bd6f743843a53de1396c43d1e308e51d40c5c4
tree0b0e309c095d0459230339edc0343cafe8f0c4c8
parent64a1a422dba4b0c09ad38310e32a223f2e16ed9d
Reduce memory waste due to non-power-of-2 allocs

This patch basically arranges for the allocation size of line_map
buffers to be as close as possible to a power of two.  This
*significantly* decreases peak memory consumption as (macro) maps are
numerous and stay live during all the compilation.

The patch adds a new ggc_round_alloc_size interface to the ggc
allocator.  In each of the two main allocator implementations ('page'
and 'zone') the function has been extracted from the main allocation
function code and returns the actual size of the allocated memory
region, thus giving a chance to the caller to maximize the amount of
memory it actually uses from the allocated memory region.  In the
'none' allocator implementation (that uses xmalloc) the
ggc_round_alloc_size just returns the requested allocation size.

Co-Authored-By: Dodji Seketeli <dodji@redhat.com>
From-SVN: r180086
gcc/ChangeLog
gcc/ggc-none.c
gcc/ggc-page.c
gcc/ggc-zone.c
gcc/ggc.h
gcc/toplev.c
libcpp/ChangeLog
libcpp/include/line-map.h
libcpp/line-map.c