comparison src/share/vm/memory/sharedHeap.cpp @ 3293:1f4413413144

7039089: G1: changeset for 7037276 broke heap verification, and related cleanups Summary: In G1 heap verification, we no longer scan perm to G1-collected heap refs as part of process_strong_roots() but rather in a separate explicit oop iteration over the perm gen. This preserves the original perm card-marks. Added a new assertion in younger_refs_iterate() to catch a simple subcase where the user may have forgotten a prior save_marks() call, as happened in the case of G1's attempt to iterate perm to G1 refs when verifying the heap before exit. The assert was deliberately weakened for ParNew+CMS and will be fixed for that combination in a future CR. Also made some (non-G1) cleanups related to code and comments obsoleted by the migration of Symbols to the native heap. Reviewed-by: iveresov, jmasa, tonyp
author ysr
date Tue, 26 Apr 2011 21:17:24 -0700
parents 1d1603768966
children 2aa9ddbb9e60
comparison
equal deleted inserted replaced
3292:c303b3532d4a 3293:1f4413413144
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_jvmti_oops_do, 48 SH_PS_jvmti_oops_do,
49 SH_PS_SymbolTable_oops_do,
50 SH_PS_StringTable_oops_do, 49 SH_PS_StringTable_oops_do,
51 SH_PS_CodeCache_oops_do, 50 SH_PS_CodeCache_oops_do,
52 // Leave this one last. 51 // Leave this one last.
53 SH_PS_NumElements 52 SH_PS_NumElements
54 }; 53 };
159 JvmtiExport::oops_do(roots); 158 JvmtiExport::oops_do(roots);
160 159
161 if (!_process_strong_tasks->is_task_claimed(SH_PS_SystemDictionary_oops_do)) { 160 if (!_process_strong_tasks->is_task_claimed(SH_PS_SystemDictionary_oops_do)) {
162 if (so & SO_AllClasses) { 161 if (so & SO_AllClasses) {
163 SystemDictionary::oops_do(roots); 162 SystemDictionary::oops_do(roots);
164 } else 163 } else if (so & SO_SystemClasses) {
165 if (so & SO_SystemClasses) { 164 SystemDictionary::always_strong_oops_do(roots);
166 SystemDictionary::always_strong_oops_do(roots); 165 }
167 }
168 }
169
170 if (!_process_strong_tasks->is_task_claimed(SH_PS_SymbolTable_oops_do)) {
171 } 166 }
172 167
173 if (!_process_strong_tasks->is_task_claimed(SH_PS_StringTable_oops_do)) { 168 if (!_process_strong_tasks->is_task_claimed(SH_PS_StringTable_oops_do)) {
174 if (so & SO_Strings || (!collecting_perm_gen && !JavaObjectsInPerm)) { 169 if (so & SO_Strings || (!collecting_perm_gen && !JavaObjectsInPerm)) {
175 StringTable::oops_do(roots); 170 StringTable::oops_do(roots);