hotspot/src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp
changeset 24104 febf9363fb68
parent 23855 c4574075402c
child 26160 aba6b01cb988
equal deleted inserted replaced
24103:956dc4aa4615 24104:febf9363fb68
    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