Mercurial > hg > graal-jvmci-8
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); |