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