comparison src/share/vm/memory/sharedHeap.cpp @ 10361:eda078b01c65

8015268: NPG: 2.5% regression in young GC times on CRM Sales Opty Summary: Split SystemDictionary and ClassLoaderDataGraph root processing to help load balancing. Reviewed-by: tschatzl, johnc
author stefank
date Mon, 27 May 2013 15:22:59 +0200
parents 001ec9515f84
children 01522ca68fc7
comparison
equal deleted inserted replaced
10360:0886b99a4d1b 10361:eda078b01c65
43 SH_PS_JNIHandles_oops_do, 43 SH_PS_JNIHandles_oops_do,
44 SH_PS_ObjectSynchronizer_oops_do, 44 SH_PS_ObjectSynchronizer_oops_do,
45 SH_PS_FlatProfiler_oops_do, 45 SH_PS_FlatProfiler_oops_do,
46 SH_PS_Management_oops_do, 46 SH_PS_Management_oops_do,
47 SH_PS_SystemDictionary_oops_do, 47 SH_PS_SystemDictionary_oops_do,
48 SH_PS_ClassLoaderDataGraph_oops_do,
48 SH_PS_jvmti_oops_do, 49 SH_PS_jvmti_oops_do,
49 SH_PS_StringTable_oops_do, 50 SH_PS_StringTable_oops_do,
50 SH_PS_CodeCache_oops_do, 51 SH_PS_CodeCache_oops_do,
51 // Leave this one last. 52 // Leave this one last.
52 SH_PS_NumElements 53 SH_PS_NumElements
171 JvmtiExport::oops_do(roots); 172 JvmtiExport::oops_do(roots);
172 173
173 if (!_process_strong_tasks->is_task_claimed(SH_PS_SystemDictionary_oops_do)) { 174 if (!_process_strong_tasks->is_task_claimed(SH_PS_SystemDictionary_oops_do)) {
174 if (so & SO_AllClasses) { 175 if (so & SO_AllClasses) {
175 SystemDictionary::oops_do(roots); 176 SystemDictionary::oops_do(roots);
177 } else if (so & SO_SystemClasses) {
178 SystemDictionary::always_strong_oops_do(roots);
179 } else {
180 fatal("We should always have selected either SO_AllClasses or SO_SystemClasses");
181 }
182 }
183
184 if (!_process_strong_tasks->is_task_claimed(SH_PS_ClassLoaderDataGraph_oops_do)) {
185 if (so & SO_AllClasses) {
176 ClassLoaderDataGraph::oops_do(roots, klass_closure, !is_scavenging); 186 ClassLoaderDataGraph::oops_do(roots, klass_closure, !is_scavenging);
177 } else if (so & SO_SystemClasses) { 187 } else if (so & SO_SystemClasses) {
178 SystemDictionary::always_strong_oops_do(roots);
179 ClassLoaderDataGraph::always_strong_oops_do(roots, klass_closure, !is_scavenging); 188 ClassLoaderDataGraph::always_strong_oops_do(roots, klass_closure, !is_scavenging);
180 } else {
181 fatal("We should always have selected either SO_AllClasses or SO_SystemClasses");
182 } 189 }
183 } 190 }
184 191
185 if (!_process_strong_tasks->is_task_claimed(SH_PS_StringTable_oops_do)) { 192 if (!_process_strong_tasks->is_task_claimed(SH_PS_StringTable_oops_do)) {
186 if (so & SO_Strings) { 193 if (so & SO_Strings) {