equal
deleted
inserted
replaced
27 #include "gc_implementation/g1/concurrentG1RefineThread.hpp" |
27 #include "gc_implementation/g1/concurrentG1RefineThread.hpp" |
28 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" |
28 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp" |
29 #include "gc_implementation/g1/g1HotCardCache.hpp" |
29 #include "gc_implementation/g1/g1HotCardCache.hpp" |
30 #include "runtime/java.hpp" |
30 #include "runtime/java.hpp" |
31 |
31 |
32 ConcurrentG1Refine::ConcurrentG1Refine(G1CollectedHeap* g1h) : |
32 ConcurrentG1Refine::ConcurrentG1Refine(G1CollectedHeap* g1h, CardTableEntryClosure* refine_closure) : |
33 _threads(NULL), _n_threads(0), |
33 _threads(NULL), _n_threads(0), |
34 _hot_card_cache(g1h) |
34 _hot_card_cache(g1h) |
35 { |
35 { |
36 // Ergonomically select initial concurrent refinement parameters |
36 // Ergonomically select initial concurrent refinement parameters |
37 if (FLAG_IS_DEFAULT(G1ConcRefinementGreenZone)) { |
37 if (FLAG_IS_DEFAULT(G1ConcRefinementGreenZone)) { |
59 |
59 |
60 uint worker_id_offset = DirtyCardQueueSet::num_par_ids(); |
60 uint worker_id_offset = DirtyCardQueueSet::num_par_ids(); |
61 |
61 |
62 ConcurrentG1RefineThread *next = NULL; |
62 ConcurrentG1RefineThread *next = NULL; |
63 for (uint i = _n_threads - 1; i != UINT_MAX; i--) { |
63 for (uint i = _n_threads - 1; i != UINT_MAX; i--) { |
64 ConcurrentG1RefineThread* t = new ConcurrentG1RefineThread(this, next, worker_id_offset, i); |
64 ConcurrentG1RefineThread* t = new ConcurrentG1RefineThread(this, next, refine_closure, worker_id_offset, i); |
65 assert(t != NULL, "Conc refine should have been created"); |
65 assert(t != NULL, "Conc refine should have been created"); |
66 if (t->osthread() == NULL) { |
66 if (t->osthread() == NULL) { |
67 vm_shutdown_during_initialization("Could not create ConcurrentG1RefineThread"); |
67 vm_shutdown_during_initialization("Could not create ConcurrentG1RefineThread"); |
68 } |
68 } |
69 |
69 |