Mercurial > hg > graal-jvmci-8
comparison src/share/vm/memory/sharedHeap.hpp @ 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 | f95d63e2154a |
children | bca17e38de00 |
comparison
equal
deleted
inserted
replaced
3292:c303b3532d4a | 3293:1f4413413144 |
---|---|
190 | 190 |
191 enum ScanningOption { | 191 enum ScanningOption { |
192 SO_None = 0x0, | 192 SO_None = 0x0, |
193 SO_AllClasses = 0x1, | 193 SO_AllClasses = 0x1, |
194 SO_SystemClasses = 0x2, | 194 SO_SystemClasses = 0x2, |
195 SO_Symbols = 0x4, | 195 SO_Strings = 0x4, |
196 SO_Strings = 0x8, | 196 SO_CodeCache = 0x8 |
197 SO_CodeCache = 0x10 | |
198 }; | 197 }; |
199 | 198 |
200 FlexibleWorkGang* workers() const { return _workers; } | 199 FlexibleWorkGang* workers() const { return _workers; } |
201 | 200 |
202 // Sets the number of parallel threads that will be doing tasks | 201 // Sets the number of parallel threads that will be doing tasks |
206 // Number of threads currently working on GC tasks. | 205 // Number of threads currently working on GC tasks. |
207 int n_par_threads() { return _n_par_threads; } | 206 int n_par_threads() { return _n_par_threads; } |
208 | 207 |
209 // Invoke the "do_oop" method the closure "roots" on all root locations. | 208 // Invoke the "do_oop" method the closure "roots" on all root locations. |
210 // If "collecting_perm_gen" is false, then roots that may only contain | 209 // If "collecting_perm_gen" is false, then roots that may only contain |
211 // references to permGen objects are not scanned. If true, the | 210 // references to permGen objects are not scanned; instead, in that case, |
212 // "perm_gen" closure is applied to all older-to-younger refs in the | 211 // the "perm_blk" closure is applied to all outgoing refs in the |
213 // permanent generation. The "so" argument determines which of roots | 212 // permanent generation. The "so" argument determines which of roots |
214 // the closure is applied to: | 213 // the closure is applied to: |
215 // "SO_None" does none; | 214 // "SO_None" does none; |
216 // "SO_AllClasses" applies the closure to all entries in the SystemDictionary; | 215 // "SO_AllClasses" applies the closure to all entries in the SystemDictionary; |
217 // "SO_SystemClasses" to all the "system" classes and loaders; | 216 // "SO_SystemClasses" to all the "system" classes and loaders; |
218 // "SO_Symbols" applies the closure to all entries in SymbolsTable; | |
219 // "SO_Strings" applies the closure to all entries in StringTable; | 217 // "SO_Strings" applies the closure to all entries in StringTable; |
220 // "SO_CodeCache" applies the closure to all elements of the CodeCache. | 218 // "SO_CodeCache" applies the closure to all elements of the CodeCache. |
221 void process_strong_roots(bool activate_scope, | 219 void process_strong_roots(bool activate_scope, |
222 bool collecting_perm_gen, | 220 bool collecting_perm_gen, |
223 ScanningOption so, | 221 ScanningOption so, |