OSDN Git Service

Use MADV_DONTNEED for freeing in garbage collector
authorak <ak@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Oct 2011 14:43:37 +0000 (14:43 +0000)
committerak <ak@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Oct 2011 14:43:37 +0000 (14:43 +0000)
commitc5db973fdab3db3e13db575e5650c0bcfd3630f4
treeb0f5ec12dbc9d0cd2f36e94c063c914fbfe5bb72
parenta67520a94129bfa4f6943e9dc20d68a30d3f596d
Use MADV_DONTNEED for freeing in garbage collector

Use the Linux MADV_DONTNEED call to unmap free pages in the garbage
collector.Then keep the unmapped pages in the free list. This avoid
excessive memory fragmentation on large LTO bulds, which can lead
to gcc bumping into the Linux vm_max_map limit per process.

gcc/:

2011-10-08  Andi Kleen  <ak@linux.intel.com>

PR other/50636
* config.in, configure: Regenerate.
* configure.ac (madvise): Add to AC_CHECK_FUNCS.
* ggc-page.c (USING_MADVISE): Add.
(page_entry): Add discarded field.
(alloc_page): Check for discarded pages.
(release_pages): Add USING_MADVISE branch.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180093 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config.in
gcc/configure
gcc/configure.ac
gcc/ggc-page.c