src/hotspot/share/gc/cms/parNewGeneration.cpp
changeset 50445 bd6b78feb6a3
parent 50396 7f48bff40a9a
child 50605 7f63c74f0974
equal deleted inserted replaced
50444:db65921e9a9b 50445:bd6b78feb6a3
    21  * questions.
    21  * questions.
    22  *
    22  *
    23  */
    23  */
    24 
    24 
    25 #include "precompiled.hpp"
    25 #include "precompiled.hpp"
       
    26 #include "classfile/stringTable.hpp"
    26 #include "gc/cms/cmsHeap.inline.hpp"
    27 #include "gc/cms/cmsHeap.inline.hpp"
    27 #include "gc/cms/compactibleFreeListSpace.hpp"
    28 #include "gc/cms/compactibleFreeListSpace.hpp"
    28 #include "gc/cms/concurrentMarkSweepGeneration.hpp"
    29 #include "gc/cms/concurrentMarkSweepGeneration.hpp"
    29 #include "gc/cms/parNewGeneration.inline.hpp"
    30 #include "gc/cms/parNewGeneration.inline.hpp"
    30 #include "gc/cms/parOopClosures.inline.hpp"
    31 #include "gc/cms/parOopClosures.inline.hpp"
   587                              StrongRootsScope* strong_roots_scope) :
   588                              StrongRootsScope* strong_roots_scope) :
   588     AbstractGangTask("ParNewGeneration collection"),
   589     AbstractGangTask("ParNewGeneration collection"),
   589     _young_gen(young_gen), _old_gen(old_gen),
   590     _young_gen(young_gen), _old_gen(old_gen),
   590     _young_old_boundary(young_old_boundary),
   591     _young_old_boundary(young_old_boundary),
   591     _state_set(state_set),
   592     _state_set(state_set),
   592     _strong_roots_scope(strong_roots_scope)
   593     _strong_roots_scope(strong_roots_scope),
       
   594     _par_state_string(StringTable::weak_storage())
   593 {}
   595 {}
   594 
   596 
   595 void ParNewGenTask::work(uint worker_id) {
   597 void ParNewGenTask::work(uint worker_id) {
   596   CMSHeap* heap = CMSHeap::heap();
   598   CMSHeap* heap = CMSHeap::heap();
   597   // Since this is being done in a separate thread, need new resource
   599   // Since this is being done in a separate thread, need new resource
   609 
   611 
   610   par_scan_state.start_strong_roots();
   612   par_scan_state.start_strong_roots();
   611   heap->young_process_roots(_strong_roots_scope,
   613   heap->young_process_roots(_strong_roots_scope,
   612                            &par_scan_state.to_space_root_closure(),
   614                            &par_scan_state.to_space_root_closure(),
   613                            &par_scan_state.older_gen_closure(),
   615                            &par_scan_state.older_gen_closure(),
   614                            &cld_scan_closure);
   616                            &cld_scan_closure,
       
   617                            &_par_state_string);
   615 
   618 
   616   par_scan_state.end_strong_roots();
   619   par_scan_state.end_strong_roots();
   617 
   620 
   618   // "evacuate followers".
   621   // "evacuate followers".
   619   par_scan_state.evacuate_followers_closure().do_void();
   622   par_scan_state.evacuate_followers_closure().do_void();