--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Thu Mar 12 10:11:20 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp Thu Mar 12 14:09:36 2015 +0100
@@ -396,6 +396,10 @@
// Resizing support
void set_end(HeapWord* value); // override
+ // Never mangle CompactibleFreeListSpace
+ void mangle_unused_area() {}
+ void mangle_unused_area_complete() {}
+
// Mutual exclusion support
Mutex* freelistLock() const { return &_freelistLock; }
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp Thu Mar 12 10:11:20 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp Thu Mar 12 14:09:36 2015 +0100
@@ -934,6 +934,16 @@
_offsets.resize(new_end - bottom());
}
+#ifndef PRODUCT
+void G1OffsetTableContigSpace::mangle_unused_area() {
+ mangle_unused_area_complete();
+}
+
+void G1OffsetTableContigSpace::mangle_unused_area_complete() {
+ SpaceMangler::mangle_region(MemRegion(top(), end()));
+}
+#endif
+
void G1OffsetTableContigSpace::print() const {
print_short();
gclog_or_tty->print_cr(" [" INTPTR_FORMAT ", " INTPTR_FORMAT ", "
--- a/hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp Thu Mar 12 10:11:20 2015 +0100
+++ b/hotspot/src/share/vm/gc_implementation/g1/heapRegion.hpp Thu Mar 12 14:09:36 2015 +0100
@@ -155,6 +155,9 @@
void set_bottom(HeapWord* value);
void set_end(HeapWord* value);
+ void mangle_unused_area() PRODUCT_RETURN;
+ void mangle_unused_area_complete() PRODUCT_RETURN;
+
HeapWord* scan_top() const;
void record_timestamp();
void reset_gc_time_stamp() { _gc_time_stamp = 0; }
--- a/hotspot/src/share/vm/memory/space.cpp Thu Mar 12 10:11:20 2015 +0100
+++ b/hotspot/src/share/vm/memory/space.cpp Thu Mar 12 14:09:36 2015 +0100
@@ -353,15 +353,6 @@
void ContiguousSpace::mangle_unused_area_complete() {
mangler()->mangle_unused_area_complete();
}
-void ContiguousSpace::mangle_region(MemRegion mr) {
- // Although this method uses SpaceMangler::mangle_region() which
- // is not specific to a space, the when the ContiguousSpace version
- // is called, it is always with regard to a space and this
- // bounds checking is appropriate.
- MemRegion space_mr(bottom(), end());
- assert(space_mr.contains(mr), "Mangling outside space");
- SpaceMangler::mangle_region(mr);
-}
#endif // NOT_PRODUCT
void CompactibleSpace::initialize(MemRegion mr,
--- a/hotspot/src/share/vm/memory/space.hpp Thu Mar 12 10:11:20 2015 +0100
+++ b/hotspot/src/share/vm/memory/space.hpp Thu Mar 12 14:09:36 2015 +0100
@@ -128,11 +128,10 @@
// For detecting GC bugs. Should only be called at GC boundaries, since
// some unused space may be used as scratch space during GC's.
- // Default implementation does nothing. We also call this when expanding
- // a space to satisfy an allocation request. See bug #4668531
- virtual void mangle_unused_area() {}
- virtual void mangle_unused_area_complete() {}
- virtual void mangle_region(MemRegion mr) {}
+ // We also call this when expanding a space to satisfy an allocation
+ // request. See bug #4668531
+ virtual void mangle_unused_area() = 0;
+ virtual void mangle_unused_area_complete() = 0;
// Testers
bool is_empty() const { return used() == 0; }
@@ -559,8 +558,6 @@
void mangle_unused_area() PRODUCT_RETURN;
// Mangle [top, end)
void mangle_unused_area_complete() PRODUCT_RETURN;
- // Mangle the given MemRegion.
- void mangle_region(MemRegion mr) PRODUCT_RETURN;
// Do some sparse checking on the area that should have been mangled.
void check_mangled_unused_area(HeapWord* limit) PRODUCT_RETURN;