comparison src/share/vm/gc_implementation/g1/concurrentMark.cpp @ 4735:776173fc2df9

7125516: G1: ~ConcurrentMark() frees incorrectly Summary: Replaced the code with a ShouldNotReachHere Reviewed-by: tonyp, jmasa
author stefank
date Thu, 29 Dec 2011 07:37:23 +0100
parents 441e946dc1af
children 023652e49ac0
comparison
equal deleted inserted replaced
4734:20bfb6d15a94 4735:776173fc2df9
724 _active_tasks = 0; 724 _active_tasks = 0;
725 clear_concurrent_marking_in_progress(); 725 clear_concurrent_marking_in_progress();
726 } 726 }
727 727
728 ConcurrentMark::~ConcurrentMark() { 728 ConcurrentMark::~ConcurrentMark() {
729 for (int i = 0; i < (int) _max_task_num; ++i) { 729 // The ConcurrentMark instance is never freed.
730 delete _task_queues->queue(i); 730 ShouldNotReachHere();
731 delete _tasks[i];
732 }
733 delete _task_queues;
734 FREE_C_HEAP_ARRAY(CMTask*, _max_task_num);
735 } 731 }
736 732
737 // This closure is used to mark refs into the g1 generation 733 // This closure is used to mark refs into the g1 generation
738 // from external roots in the CMS bit map. 734 // from external roots in the CMS bit map.
739 // Called at the first checkpoint. 735 // Called at the first checkpoint.