Mercurial > hg > graal-compiler
comparison src/share/vm/memory/sharedHeap.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 | ba764ed4b6f2 |
children | 1ee8caae33af |
comparison
equal
deleted
inserted
replaced
189:0b27f3512f9e | 342:37f87013dfd8 |
---|---|
55 if (_process_strong_tasks == NULL || !_process_strong_tasks->valid()) { | 55 if (_process_strong_tasks == NULL || !_process_strong_tasks->valid()) { |
56 vm_exit_during_initialization("Failed necessary allocation."); | 56 vm_exit_during_initialization("Failed necessary allocation."); |
57 } | 57 } |
58 _sh = this; // ch is static, should be set only once. | 58 _sh = this; // ch is static, should be set only once. |
59 if ((UseParNewGC || | 59 if ((UseParNewGC || |
60 (UseConcMarkSweepGC && CMSParallelRemarkEnabled)) && | 60 (UseConcMarkSweepGC && CMSParallelRemarkEnabled) || |
61 UseG1GC) && | |
61 ParallelGCThreads > 0) { | 62 ParallelGCThreads > 0) { |
62 _workers = new WorkGang("Parallel GC Threads", ParallelGCThreads, true); | 63 _workers = new WorkGang("Parallel GC Threads", ParallelGCThreads, |
64 /* are_GC_task_threads */true, | |
65 /* are_ConcurrentGC_threads */false); | |
63 if (_workers == NULL) { | 66 if (_workers == NULL) { |
64 vm_exit_during_initialization("Failed necessary allocation."); | 67 vm_exit_during_initialization("Failed necessary allocation."); |
65 } | 68 } |
66 } | 69 } |
67 } | 70 } |
68 | 71 |
72 bool SharedHeap::heap_lock_held_for_gc() { | |
73 Thread* t = Thread::current(); | |
74 return Heap_lock->owned_by_self() | |
75 || ( (t->is_GC_task_thread() || t->is_VM_thread()) | |
76 && _thread_holds_heap_lock_for_gc); | |
77 } | |
69 | 78 |
70 void SharedHeap::set_par_threads(int t) { | 79 void SharedHeap::set_par_threads(int t) { |
71 _n_par_threads = t; | 80 _n_par_threads = t; |
72 _process_strong_tasks->set_par_threads(t); | 81 _process_strong_tasks->set_par_threads(t); |
73 } | 82 } |
278 mr.word_size()); | 287 mr.word_size()); |
279 } | 288 } |
280 } | 289 } |
281 | 290 |
282 // Some utilities. | 291 // Some utilities. |
283 void SharedHeap::print_size_transition(size_t bytes_before, | 292 void SharedHeap::print_size_transition(outputStream* out, |
293 size_t bytes_before, | |
284 size_t bytes_after, | 294 size_t bytes_after, |
285 size_t capacity) { | 295 size_t capacity) { |
286 tty->print(" %d%s->%d%s(%d%s)", | 296 out->print(" %d%s->%d%s(%d%s)", |
287 byte_size_in_proper_unit(bytes_before), | 297 byte_size_in_proper_unit(bytes_before), |
288 proper_unit_for_byte_size(bytes_before), | 298 proper_unit_for_byte_size(bytes_before), |
289 byte_size_in_proper_unit(bytes_after), | 299 byte_size_in_proper_unit(bytes_after), |
290 proper_unit_for_byte_size(bytes_after), | 300 proper_unit_for_byte_size(bytes_after), |
291 byte_size_in_proper_unit(capacity), | 301 byte_size_in_proper_unit(capacity), |