Mercurial > hg > graal-jvmci-8
comparison src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp @ 143:b5489bb705c9
6662086: 6u4+, 7b11+: CMS never clears referents when -XX:+ParallelRefProcEnabled
Summary: Construct the relevant CMSIsAliveClosure used by CMS during parallel reference processing with the correct span. It had incorrectly been constructed with an empty span, a regression introduced in 6417901.
Reviewed-by: jcoomes
author | ysr |
---|---|
date | Tue, 06 May 2008 15:37:36 -0700 |
parents | ba764ed4b6f2 |
children | 00b023ae2d78 |
comparison
equal
deleted
inserted
replaced
142:8bd1e4487c18 | 143: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 }; |