Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/g1/heapRegion.hpp @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | a2f7274eb6ef |
children | 8fbf05030e24 |
comparison
equal
deleted
inserted
replaced
6724:36d1d483d5d6 | 6725:da91efe96a93 |
---|---|
83 FilterKind _fk; | 83 FilterKind _fk; |
84 G1CollectedHeap* _g1; | 84 G1CollectedHeap* _g1; |
85 | 85 |
86 void walk_mem_region_with_cl(MemRegion mr, | 86 void walk_mem_region_with_cl(MemRegion mr, |
87 HeapWord* bottom, HeapWord* top, | 87 HeapWord* bottom, HeapWord* top, |
88 OopClosure* cl); | 88 ExtendedOopClosure* cl); |
89 | 89 |
90 // We don't specialize this for FilteringClosure; filtering is handled by | 90 // We don't specialize this for FilteringClosure; filtering is handled by |
91 // the "FilterKind" mechanism. But we provide this to avoid a compiler | 91 // the "FilterKind" mechanism. But we provide this to avoid a compiler |
92 // warning. | 92 // warning. |
93 void walk_mem_region_with_cl(MemRegion mr, | 93 void walk_mem_region_with_cl(MemRegion mr, |
94 HeapWord* bottom, HeapWord* top, | 94 HeapWord* bottom, HeapWord* top, |
95 FilteringClosure* cl) { | 95 FilteringClosure* cl) { |
96 HeapRegionDCTOC::walk_mem_region_with_cl(mr, bottom, top, | 96 HeapRegionDCTOC::walk_mem_region_with_cl(mr, bottom, top, |
97 (OopClosure*)cl); | 97 (ExtendedOopClosure*)cl); |
98 } | 98 } |
99 | 99 |
100 // Get the actual top of the area on which the closure will | 100 // Get the actual top of the area on which the closure will |
101 // operate, given where the top is assumed to be (the end of the | 101 // operate, given where the top is assumed to be (the end of the |
102 // memory region passed to do_MemRegion) and where the object | 102 // memory region passed to do_MemRegion) and where the object |
117 Filtering_DCTOC::walk_mem_region(mr, bottom, top); | 117 Filtering_DCTOC::walk_mem_region(mr, bottom, top); |
118 } | 118 } |
119 | 119 |
120 public: | 120 public: |
121 HeapRegionDCTOC(G1CollectedHeap* g1, | 121 HeapRegionDCTOC(G1CollectedHeap* g1, |
122 HeapRegion* hr, OopClosure* cl, | 122 HeapRegion* hr, ExtendedOopClosure* cl, |
123 CardTableModRefBS::PrecisionStyle precision, | 123 CardTableModRefBS::PrecisionStyle precision, |
124 FilterKind fk); | 124 FilterKind fk); |
125 }; | 125 }; |
126 | 126 |
127 // The complicating factor is that BlockOffsetTable diverged | 127 // The complicating factor is that BlockOffsetTable diverged |
229 ContinuesHumongous | 229 ContinuesHumongous |
230 }; | 230 }; |
231 | 231 |
232 // Requires that the region "mr" be dense with objects, and begin and end | 232 // Requires that the region "mr" be dense with objects, and begin and end |
233 // with an object. | 233 // with an object. |
234 void oops_in_mr_iterate(MemRegion mr, OopClosure* cl); | 234 void oops_in_mr_iterate(MemRegion mr, ExtendedOopClosure* cl); |
235 | 235 |
236 // The remembered set for this region. | 236 // The remembered set for this region. |
237 // (Might want to make this "inline" later, to avoid some alloc failure | 237 // (Might want to make this "inline" later, to avoid some alloc failure |
238 // issues.) | 238 // issues.) |
239 HeapRegionRemSet* _rem_set; | 239 HeapRegionRemSet* _rem_set; |
604 HeapWord* prev_top_at_mark_start() const { return _prev_top_at_mark_start; } | 604 HeapWord* prev_top_at_mark_start() const { return _prev_top_at_mark_start; } |
605 HeapWord* next_top_at_mark_start() const { return _next_top_at_mark_start; } | 605 HeapWord* next_top_at_mark_start() const { return _next_top_at_mark_start; } |
606 | 606 |
607 // Apply "cl->do_oop" to (the addresses of) all reference fields in objects | 607 // Apply "cl->do_oop" to (the addresses of) all reference fields in objects |
608 // allocated in the current region before the last call to "save_mark". | 608 // allocated in the current region before the last call to "save_mark". |
609 void oop_before_save_marks_iterate(OopClosure* cl); | 609 void oop_before_save_marks_iterate(ExtendedOopClosure* cl); |
610 | 610 |
611 // Note the start or end of marking. This tells the heap region | 611 // Note the start or end of marking. This tells the heap region |
612 // that the collector is about to start or has finished (concurrently) | 612 // that the collector is about to start or has finished (concurrently) |
613 // marking the heap. | 613 // marking the heap. |
614 | 614 |