Mercurial > hg > graal-compiler
changeset 347:60fb9c4db4e6
6718086: CMS assert: _concurrent_iteration_safe_limit update missed
Summary: Initialize the field correctly in ContiguousSpace's constructor and initialize() methods, using the latter for the survivor spaces upon initial construction or a subsequent resizing of the young generation. Add some missing Space sub-class constructors.
Reviewed-by: apetrusenko
author | ysr |
---|---|
date | Mon, 23 Jun 2008 16:49:37 -0700 |
parents | bb254e57d2f4 |
children | 69fefd031e6c |
files | src/share/vm/memory/defNewGeneration.cpp src/share/vm/memory/space.cpp src/share/vm/memory/space.hpp |
diffstat | 3 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/memory/defNewGeneration.cpp Tue Jun 17 08:40:48 2008 -0700 +++ b/src/share/vm/memory/defNewGeneration.cpp Mon Jun 23 16:49:37 2008 -0700 @@ -227,8 +227,8 @@ eden()->mangle_unused_area(); } } - from()->set_bounds(fromMR); from()->clear(); - to()->set_bounds(toMR); to()->clear(); + from()->initialize(fromMR, true /* clear */); + to()->initialize( toMR, true /* clear */); // Make sure we compact eden, then from. // The to-space is normally empty before a compaction so need // not be considered. The exception is during promotion
--- a/src/share/vm/memory/space.cpp Tue Jun 17 08:40:48 2008 -0700 +++ b/src/share/vm/memory/space.cpp Mon Jun 23 16:49:37 2008 -0700 @@ -276,6 +276,7 @@ set_top(bottom()); set_saved_mark(); if (clear_space) clear(); + set_concurrent_iteration_safe_limit(top()); } void ContiguousSpace::clear() {
--- a/src/share/vm/memory/space.hpp Tue Jun 17 08:40:48 2008 -0700 +++ b/src/share/vm/memory/space.hpp Mon Jun 23 16:49:37 2008 -0700 @@ -373,6 +373,9 @@ CompactibleSpace* _next_compaction_space; public: + CompactibleSpace() : + _compaction_top(NULL), _next_compaction_space(NULL) {} + virtual void initialize(MemRegion mr, bool clear_space); virtual void clear(); @@ -766,6 +769,10 @@ inline HeapWord* par_allocate_impl(size_t word_size, HeapWord* end_value); public: + ContiguousSpace() : + _top(NULL), + _concurrent_iteration_safe_limit(NULL) {} + virtual void initialize(MemRegion mr, bool clear_space); // Accessors @@ -970,7 +977,8 @@ HeapWord* _soft_end; public: - EdenSpace(DefNewGeneration* gen) : _gen(gen) { _soft_end = NULL; } + EdenSpace(DefNewGeneration* gen) : + _gen(gen), _soft_end(NULL) {} // Get/set just the 'soft' limit. HeapWord* soft_end() { return _soft_end; }