6718086: CMS assert: _concurrent_iteration_safe_limit update missed

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
This commit is contained in:
Y. Srinivas Ramakrishna 2008-06-23 16:49:37 -07:00
parent c201c739e4
commit b6c292d65d
3 changed files with 12 additions and 3 deletions

View file

@ -373,6 +373,9 @@ private:
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 @@ class ContiguousSpace: public CompactibleSpace {
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 @@ class EdenSpace : public ContiguousSpace {
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; }