< prev index next >
src/hotspot/share/gc/cms/parNewGeneration.cpp
Print this page
rev 50373 : 8195097: Make it possible to process StringTable outside safepoint
Reviewed-by:
@@ -21,10 +21,11 @@
* questions.
*
*/
#include "precompiled.hpp"
+#include "classfile/stringTable.hpp"
#include "gc/cms/cmsHeap.inline.hpp"
#include "gc/cms/compactibleFreeListSpace.hpp"
#include "gc/cms/concurrentMarkSweepGeneration.hpp"
#include "gc/cms/parNewGeneration.inline.hpp"
#include "gc/cms/parOopClosures.inline.hpp"
@@ -587,11 +588,12 @@
StrongRootsScope* strong_roots_scope) :
AbstractGangTask("ParNewGeneration collection"),
_young_gen(young_gen), _old_gen(old_gen),
_young_old_boundary(young_old_boundary),
_state_set(state_set),
- _strong_roots_scope(strong_roots_scope)
+ _strong_roots_scope(strong_roots_scope),
+ _par_state_string(StringTable::weak_storage())
{}
void ParNewGenTask::work(uint worker_id) {
CMSHeap* heap = CMSHeap::heap();
// Since this is being done in a separate thread, need new resource
@@ -609,11 +611,12 @@
par_scan_state.start_strong_roots();
heap->young_process_roots(_strong_roots_scope,
&par_scan_state.to_space_root_closure(),
&par_scan_state.older_gen_closure(),
- &cld_scan_closure);
+ &cld_scan_closure,
+ &_par_state_string);
par_scan_state.end_strong_roots();
// "evacuate followers".
par_scan_state.evacuate_followers_closure().do_void();
< prev index next >