comparison src/share/vm/memory/heapInspection.cpp @ 342:37f87013dfd8

6711316: Open source the Garbage-First garbage collector Summary: First mercurial integration of the code for the Garbage-First garbage collector. Reviewed-by: apetrusenko, iveresov, jmasa, sgoldman, tonyp, ysr
author ysr
date Thu, 05 Jun 2008 15:57:56 -0700
parents 3c1dbcaaab1d
children 1ee8caae33af
comparison
equal deleted inserted replaced
189:0b27f3512f9e 342:37f87013dfd8
236 void HeapInspection::heap_inspection(outputStream* st) { 236 void HeapInspection::heap_inspection(outputStream* st) {
237 ResourceMark rm; 237 ResourceMark rm;
238 HeapWord* ref; 238 HeapWord* ref;
239 239
240 CollectedHeap* heap = Universe::heap(); 240 CollectedHeap* heap = Universe::heap();
241 bool is_shared_heap = false;
241 switch (heap->kind()) { 242 switch (heap->kind()) {
243 case CollectedHeap::G1CollectedHeap:
242 case CollectedHeap::GenCollectedHeap: { 244 case CollectedHeap::GenCollectedHeap: {
243 GenCollectedHeap* gch = (GenCollectedHeap*)heap; 245 is_shared_heap = true;
244 gch->gc_prologue(false /* !full */); // get any necessary locks 246 SharedHeap* sh = (SharedHeap*)heap;
245 ref = gch->perm_gen()->used_region().start(); 247 sh->gc_prologue(false /* !full */); // get any necessary locks, etc.
248 ref = sh->perm_gen()->used_region().start();
246 break; 249 break;
247 } 250 }
248 #ifndef SERIALGC 251 #ifndef SERIALGC
249 case CollectedHeap::ParallelScavengeHeap: { 252 case CollectedHeap::ParallelScavengeHeap: {
250 ParallelScavengeHeap* psh = (ParallelScavengeHeap*)heap; 253 ParallelScavengeHeap* psh = (ParallelScavengeHeap*)heap;
282 } else { 285 } else {
283 st->print_cr("WARNING: Ran out of C-heap; histogram not generated"); 286 st->print_cr("WARNING: Ran out of C-heap; histogram not generated");
284 } 287 }
285 st->flush(); 288 st->flush();
286 289
287 if (Universe::heap()->kind() == CollectedHeap::GenCollectedHeap) { 290 if (is_shared_heap) {
288 GenCollectedHeap* gch = GenCollectedHeap::heap(); 291 SharedHeap* sh = (SharedHeap*)heap;
289 gch->gc_epilogue(false /* !full */); // release all acquired locks 292 sh->gc_epilogue(false /* !full */); // release all acquired locks, etc.
290 } 293 }
291 } 294 }
292 295
293 class FindInstanceClosure : public ObjectClosure { 296 class FindInstanceClosure : public ObjectClosure {
294 private: 297 private: