SUGGESTED FIX
diff -r bb254e57d2f4 -r 60fb9c4db4e6 src/share/vm/memory/defNewGeneration.cpp
--- 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 @@ void DefNewGeneration::compute_space_bou
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
diff -r bb254e57d2f4 -r 60fb9c4db4e6 src/share/vm/memory/space.cpp
--- 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 @@ void ContiguousSpace::initialize(MemRegi
set_top(bottom());
set_saved_mark();
if (clear_space) clear();
+ set_concurrent_iteration_safe_limit(top());
}
void ContiguousSpace::clear() {
diff -r bb254e57d2f4 -r 60fb9c4db4e6 src/share/vm/memory/space.hpp
--- 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 @@ 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 Compactibl
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; }
|