diff options
author | Laurynas Biveinis <laurynas.biveinis@gmail.com> | 2010-05-26 11:24:42 +0000 |
---|---|---|
committer | Laurynas Biveinis <lauras@gcc.gnu.org> | 2010-05-26 11:24:42 +0000 |
commit | e4dfaf724fb00007371cf3ff0ee86b5ec52cc558 (patch) | |
tree | 37c08416aaec00456b907de173556f4632bab3b8 | |
parent | e12da9c28bfa69bb6fc868841855851527a3db14 (diff) | |
download | gcc-e4dfaf724fb00007371cf3ff0ee86b5ec52cc558.zip gcc-e4dfaf724fb00007371cf3ff0ee86b5ec52cc558.tar.gz gcc-e4dfaf724fb00007371cf3ff0ee86b5ec52cc558.tar.bz2 |
ggc-zone.c: Update copyright year.
2010-05-26 Laurynas Biveinis <laurynas.biveinis@gmail.com>
* ggc-zone.c: Update copyright year.
(poison_region): Mark memory for Valgrind as undefined before
memset () call and inaccessible afterwards.
(ggc_pch_total_size): Change type of i to int.
2010-05-26 Laurynas Biveinis <laurynas.biveinis@gmail.com>
* ggc-common.c (ggc_free_overhead): Allow empty slot.
2010-05-26 Laurynas Biveinis <laurynas.biveinis@gmail.com>
* ggc-common.c: Update copyright year.
(ggc_rlimit_bound): Remove prototype. Compile only if
!ENABLE_GC_CHECKING && !ENABLE_GC_ALWAYS_COLLECT.
(ggc_min_heapsize_heuristic): Compile only if !ENABLE_GC_CHECKING
&& !ENABLE_GC_ALWAYS_COLLECT. Make static.
(ggc_min_heapsize_heuristic): Likewise.
From-SVN: r159863
-rw-r--r-- | gcc/ChangeLog | 20 | ||||
-rw-r--r-- | gcc/ggc-common.c | 20 | ||||
-rw-r--r-- | gcc/ggc-zone.c | 14 |
3 files changed, 43 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7996315..4e02230 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,23 @@ +2010-05-26 Laurynas Biveinis <laurynas.biveinis@gmail.com> + + * ggc-zone.c: Update copyright year. + (poison_region): Mark memory for Valgrind as undefined before + memset () call and inaccessible afterwards. + (ggc_pch_total_size): Change type of i to int. + +2010-05-26 Laurynas Biveinis <laurynas.biveinis@gmail.com> + + * ggc-common.c (ggc_free_overhead): Allow empty slot. + +2010-05-26 Laurynas Biveinis <laurynas.biveinis@gmail.com> + + * ggc-common.c: Update copyright year. + (ggc_rlimit_bound): Remove prototype. Compile only if + !ENABLE_GC_CHECKING && !ENABLE_GC_ALWAYS_COLLECT. + (ggc_min_heapsize_heuristic): Compile only if !ENABLE_GC_CHECKING + && !ENABLE_GC_ALWAYS_COLLECT. Make static. + (ggc_min_heapsize_heuristic): Likewise. + 2010-05-26 Richard Guenther <rguenther@suse.de> PR rtl-optimization/44164 diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c index 28c2b79..76bf975 100644 --- a/gcc/ggc-common.c +++ b/gcc/ggc-common.c @@ -1,6 +1,6 @@ /* Simple garbage collection for the GNU compiler. - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 - Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, + 2009, 2010 Free Software Foundation, Inc. This file is part of GCC. @@ -70,7 +70,6 @@ static int compare_ptr_data (const void *, const void *); static void relocate_ptrs (void *, void *); static void write_pch_globals (const struct ggc_root_tab * const *tab, struct traversal_state *state); -static double ggc_rlimit_bound (double); /* Maintain global roots that are preserved during GC. */ @@ -742,6 +741,8 @@ mmap_gt_pch_use_address (void *base, size_t size, int fd, size_t offset) } #endif /* HAVE_MMAP_FILE */ +#if !defined ENABLE_GC_CHECKING && !defined ENABLE_GC_ALWAYS_COLLECT + /* Modify the bound based on rlimits. */ static double ggc_rlimit_bound (double limit) @@ -776,7 +777,7 @@ ggc_rlimit_bound (double limit) } /* Heuristic to set a default for GGC_MIN_EXPAND. */ -int +static int ggc_min_expand_heuristic (void) { double min_expand = physmem_total(); @@ -795,7 +796,7 @@ ggc_min_expand_heuristic (void) } /* Heuristic to set a default for GGC_MIN_HEAPSIZE. */ -int +static int ggc_min_heapsize_heuristic (void) { double phys_kbytes = physmem_total(); @@ -832,6 +833,7 @@ ggc_min_heapsize_heuristic (void) return phys_kbytes; } +#endif void init_ggc_heuristics (void) @@ -980,7 +982,13 @@ ggc_free_overhead (void *ptr) { PTR *slot = htab_find_slot_with_hash (ptr_hash, ptr, htab_hash_pointer (ptr), NO_INSERT); - struct ptr_hash_entry *p = (struct ptr_hash_entry *) *slot; + struct ptr_hash_entry *p; + /* The pointer might be not found if a PCH read happened between allocation + and ggc_free () call. FIXME: account memory properly in the presence of + PCH. */ + if (!slot) + return; + p = (struct ptr_hash_entry *) *slot; p->loc->freed += p->size; htab_clear_slot (ptr_hash, slot); free (p); diff --git a/gcc/ggc-zone.c b/gcc/ggc-zone.c index bc775b1..a8154cc 100644 --- a/gcc/ggc-zone.c +++ b/gcc/ggc-zone.c @@ -1,6 +1,6 @@ /* "Bag-of-pages" zone garbage collector for the GNU compiler. - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 - Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, + 2010 Free Software Foundation, Inc. Contributed by Richard Henderson (rth@redhat.com) and Daniel Berlin (dberlin@dberlin.org). Rewritten by Daniel Jacobowitz @@ -1385,8 +1385,12 @@ ggc_alloc_stat (size_t size MEM_STAT_DECL) /* Poison the chunk. */ #ifdef ENABLE_GC_CHECKING -#define poison_region(PTR, SIZE) \ - memset ((PTR), 0xa5, (SIZE)) +#define poison_region(PTR, SIZE) \ + do { \ + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED ((PTR), (SIZE))); \ + memset ((PTR), 0xa5, (SIZE)); \ + VALGRIND_DISCARD (VALGRIND_MAKE_MEM_NOACCESS ((PTR), (SIZE))); \ + } while (0) #else #define poison_region(PTR, SIZE) #endif @@ -2349,7 +2353,7 @@ ggc_pch_count_object (struct ggc_pch_data *d, void *x ATTRIBUTE_UNUSED, size_t ggc_pch_total_size (struct ggc_pch_data *d) { - enum gt_types_enum i; + int i; size_t alloc_size, total_size; total_size = 0; |