Mercurial > hg > truffle
diff src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp @ 6948:e522a00b91aa
Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/ after NPG - C++ build works
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 12 Nov 2012 23:14:12 +0100 |
parents | da91efe96a93 |
children | f64ffbf81af5 |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp Mon Nov 12 18:11:17 2012 +0100 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp Mon Nov 12 23:14:12 2012 +0100 @@ -41,7 +41,7 @@ // ConcurrentMarkSweepGeneration is in support of a concurrent // mark-sweep old generation in the Detlefs-Printezis--Boehm-Demers-Schenker // style. We assume, for now, that this generation is always the -// seniormost generation (modulo the PermGeneration), and for simplicity +// seniormost generation and for simplicity // in the first implementation, that this generation is a single compactible // space. Neither of these restrictions appears essential, and will be // relaxed in the future when more time is available to implement the @@ -610,7 +610,6 @@ protected: ConcurrentMarkSweepGeneration* _cmsGen; // old gen (CMS) - ConcurrentMarkSweepGeneration* _permGen; // perm gen MemRegion _span; // span covering above two CardTableRS* _ct; // card table @@ -618,9 +617,6 @@ CMSBitMap _markBitMap; CMSBitMap _modUnionTable; CMSMarkStack _markStack; - CMSMarkStack _revisitStack; // used to keep track of klassKlass objects - // to revisit - CMSBitMap _perm_gen_verify_bit_map; // Mark bit map for perm gen verification support. HeapWord* _restart_addr; // in support of marking stack overflow void lower_restart_addr(HeapWord* low); @@ -783,6 +779,7 @@ // Does precleaning work, returning a quantity indicative of // the amount of "useful work" done. size_t preclean_work(bool clean_refs, bool clean_survivors); + void preclean_klasses(MarkRefsIntoAndScanClosure* cl, Mutex* freelistLock); void abortable_preclean(); // Preclean while looking for possible abort void initialize_sequential_subtasks_for_young_gen_rescan(int i); // Helper function for above; merge-sorts the per-thread plab samples @@ -855,7 +852,6 @@ void setup_cms_unloading_and_verification_state(); public: CMSCollector(ConcurrentMarkSweepGeneration* cmsGen, - ConcurrentMarkSweepGeneration* permGen, CardTableRS* ct, ConcurrentMarkSweepPolicy* cp); ConcurrentMarkSweepThread* cmsThread() { return _cmsThread; } @@ -891,7 +887,7 @@ bool should_unload_classes() const { return _should_unload_classes; } - bool update_should_unload_classes(); + void update_should_unload_classes(); void direct_allocated(HeapWord* start, size_t size); @@ -1002,9 +998,6 @@ CMSMarkStack* verification_mark_stack() { return &_markStack; } CMSBitMap* verification_mark_bm() { return &_verification_mark_bm; } - // Get the bit map with a perm gen "deadness" information. - CMSBitMap* perm_gen_verify_bit_map() { return &_perm_gen_verify_bit_map; } - // Initialization errors bool completed_initialization() { return _completed_initialization; } }; @@ -1253,8 +1246,8 @@ void save_sweep_limit(); // More iteration support - virtual void oop_iterate(MemRegion mr, OopClosure* cl); - virtual void oop_iterate(OopClosure* cl); + virtual void oop_iterate(MemRegion mr, ExtendedOopClosure* cl); + virtual void oop_iterate(ExtendedOopClosure* cl); virtual void safe_object_iterate(ObjectClosure* cl); virtual void object_iterate(ObjectClosure* cl); @@ -1273,8 +1266,6 @@ // the space. FreeChunk* find_chunk_at_end(); - // Overriding of unused functionality (sharing not yet supported with CMS) - void pre_adjust_pointers(); void post_compact(); // Debugging @@ -1359,7 +1350,6 @@ CMSBitMap* _bitMap; CMSBitMap* _mut; CMSMarkStack* _markStack; - CMSMarkStack* _revisitStack; bool _yield; int _skipBits; HeapWord* _finger; @@ -1370,7 +1360,6 @@ MarkFromRootsClosure(CMSCollector* collector, MemRegion span, CMSBitMap* bitMap, CMSMarkStack* markStack, - CMSMarkStack* revisitStack, bool should_yield, bool verifying = false); bool do_bit(size_t offset); void reset(HeapWord* addr); @@ -1394,7 +1383,6 @@ CMSBitMap* _mut; OopTaskQueue* _work_queue; CMSMarkStack* _overflow_stack; - CMSMarkStack* _revisit_stack; bool _yield; int _skip_bits; HeapWord* _finger; @@ -1406,7 +1394,6 @@ CMSBitMap* bit_map, OopTaskQueue* work_queue, CMSMarkStack* overflow_stack, - CMSMarkStack* revisit_stack, bool should_yield); bool do_bit(size_t offset); inline void do_yield_check(); @@ -1419,7 +1406,7 @@ // The following closures are used to do certain kinds of verification of // CMS marking. -class PushAndMarkVerifyClosure: public OopClosure { +class PushAndMarkVerifyClosure: public CMSOopClosure { CMSCollector* _collector; MemRegion _span; CMSBitMap* _verification_bm; @@ -1428,7 +1415,7 @@ protected: void do_oop(oop p); template <class T> inline void do_oop_work(T *p) { - oop obj = oopDesc::load_decode_heap_oop_not_null(p); + oop obj = oopDesc::load_decode_heap_oop(p); do_oop(obj); } public: @@ -1439,6 +1426,7 @@ CMSMarkStack* mark_stack); void do_oop(oop* p); void do_oop(narrowOop* p); + // Deal with a stack overflow condition void handle_stack_overflow(HeapWord* lost); }; @@ -1504,7 +1492,6 @@ ReferenceProcessor* rp, CMSBitMap* bit_map, CMSMarkStack* mark_stack, - CMSMarkStack* revisit_stack, MarkRefsIntoAndScanClosure* cl): #ifdef ASSERT _collector(collector), @@ -1520,7 +1507,6 @@ ReferenceProcessor* rp, CMSBitMap* bit_map, OopTaskQueue* work_queue, - CMSMarkStack* revisit_stack, Par_MarkRefsIntoAndScanClosure* cl): #ifdef ASSERT _collector(collector), @@ -1558,24 +1544,22 @@ CompactibleFreeListSpace* space, CMSBitMap* bit_map, CMSMarkStack* mark_stack, - CMSMarkStack* revisit_stack, MarkRefsIntoAndScanClosure* cl): _space(space), _num_dirty_cards(0), _scan_cl(collector, span, collector->ref_processor(), bit_map, - mark_stack, revisit_stack, cl) { } + mark_stack, cl) { } MarkFromDirtyCardsClosure(CMSCollector* collector, MemRegion span, CompactibleFreeListSpace* space, CMSBitMap* bit_map, OopTaskQueue* work_queue, - CMSMarkStack* revisit_stack, Par_MarkRefsIntoAndScanClosure* cl): _space(space), _num_dirty_cards(0), _scan_cl(collector, span, collector->ref_processor(), bit_map, - work_queue, revisit_stack, cl) { } + work_queue, cl) { } void do_MemRegion(MemRegion mr); void set_space(CompactibleFreeListSpace* space) { _space = space; } @@ -1609,7 +1593,6 @@ MemRegion span, CMSBitMap* bitMap, CMSMarkStack* markStack, - CMSMarkStack* revisitStack, MarkRefsIntoAndScanClosure* cl, bool should_yield): _collector(collector), @@ -1838,13 +1821,12 @@ public: CMSParDrainMarkingStackClosure(CMSCollector* collector, MemRegion span, CMSBitMap* bit_map, - CMSMarkStack* revisit_stack, OopTaskQueue* work_queue): _collector(collector), _span(span), _bit_map(bit_map), _work_queue(work_queue), - _mark_and_push(collector, span, bit_map, revisit_stack, work_queue) { } + _mark_and_push(collector, span, bit_map, work_queue) { } public: void trim_queue(uint max);