src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp

changeset 578
b5489bb705c9
parent 548
ba764ed4b6f2
child 887
00b023ae2d78
equal deleted inserted replaced
577:8bd1e4487c18 578:b5489bb705c9
327 // This is currently used during the (weak) reference object 327 // This is currently used during the (weak) reference object
328 // processing phase of the CMS final checkpoint step. 328 // processing phase of the CMS final checkpoint step.
329 class CMSKeepAliveClosure: public OopClosure { 329 class CMSKeepAliveClosure: public OopClosure {
330 private: 330 private:
331 CMSCollector* _collector; 331 CMSCollector* _collector;
332 MemRegion _span; 332 const MemRegion _span;
333 CMSMarkStack* _mark_stack; 333 CMSMarkStack* _mark_stack;
334 CMSBitMap* _bit_map; 334 CMSBitMap* _bit_map;
335 protected: 335 protected:
336 DO_OOP_WORK_DEFN 336 DO_OOP_WORK_DEFN
337 public: 337 public:
338 CMSKeepAliveClosure(CMSCollector* collector, MemRegion span, 338 CMSKeepAliveClosure(CMSCollector* collector, MemRegion span,
339 CMSBitMap* bit_map, CMSMarkStack* mark_stack): 339 CMSBitMap* bit_map, CMSMarkStack* mark_stack):
340 _collector(collector), 340 _collector(collector),
341 _span(span), 341 _span(span),
342 _bit_map(bit_map), 342 _bit_map(bit_map),
343 _mark_stack(mark_stack) { } 343 _mark_stack(mark_stack) {
344 assert(!_span.is_empty(), "Empty span could spell trouble");
345 }
344 virtual void do_oop(oop* p); 346 virtual void do_oop(oop* p);
345 virtual void do_oop(narrowOop* p); 347 virtual void do_oop(narrowOop* p);
346 inline void do_oop_nv(oop* p) { CMSKeepAliveClosure::do_oop_work(p); } 348 inline void do_oop_nv(oop* p) { CMSKeepAliveClosure::do_oop_work(p); }
347 inline void do_oop_nv(narrowOop* p) { CMSKeepAliveClosure::do_oop_work(p); } 349 inline void do_oop_nv(narrowOop* p) { CMSKeepAliveClosure::do_oop_work(p); }
348 }; 350 };

mercurial