7125516: G1: ~ConcurrentMark() frees incorrectly
Summary: Replaced the code with a ShouldNotReachHere
Reviewed-by: tonyp, jmasa
--- a/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Tue Dec 27 16:43:49 2011 -0800
+++ b/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp Thu Dec 29 07:37:23 2011 +0100
@@ -726,12 +726,8 @@
}
ConcurrentMark::~ConcurrentMark() {
- for (int i = 0; i < (int) _max_task_num; ++i) {
- delete _task_queues->queue(i);
- delete _tasks[i];
- }
- delete _task_queues;
- FREE_C_HEAP_ARRAY(CMTask*, _max_task_num);
+ // The ConcurrentMark instance is never freed.
+ ShouldNotReachHere();
}
// This closure is used to mark refs into the g1 generation