Mercurial > hg > truffle
diff src/share/vm/gc_implementation/g1/concurrentMark.hpp @ 5988:2a0172480595
7127697: G1: remove dead code after recent concurrent mark changes
Summary: Removed lots of dead code after some recent conc mark changes.
Reviewed-by: brutisso, johnc
author | tonyp |
---|---|
date | Thu, 05 Apr 2012 13:57:23 -0400 |
parents | eff609af17d7 |
children | 720b6a76dd9d |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/concurrentMark.hpp Fri Mar 16 09:52:57 2012 +0100 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.hpp Thu Apr 05 13:57:23 2012 -0400 @@ -42,9 +42,7 @@ class G1CMIsAliveClosure: public BoolObjectClosure { G1CollectedHeap* _g1; public: - G1CMIsAliveClosure(G1CollectedHeap* g1) : - _g1(g1) - {} + G1CMIsAliveClosure(G1CollectedHeap* g1) : _g1(g1) { } void do_object(oop obj) { ShouldNotCallThis(); @@ -111,11 +109,6 @@ return offsetToHeapWord(heapWordToOffset(addr) + 1); } - void mostly_disjoint_range_union(BitMap* from_bitmap, - size_t from_start_index, - HeapWord* to_start_word, - size_t word_num); - // debugging NOT_PRODUCT(bool covers(ReservedSpace rs) const;) }; @@ -258,60 +251,6 @@ void oops_do(OopClosure* f); }; -class CMRegionStack VALUE_OBJ_CLASS_SPEC { - MemRegion* _base; - jint _capacity; - jint _index; - jint _oops_do_bound; - bool _overflow; -public: - CMRegionStack(); - ~CMRegionStack(); - void allocate(size_t size); - - // This is lock-free; assumes that it will only be called in parallel - // with other "push" operations (no pops). - void push_lock_free(MemRegion mr); - - // Lock-free; assumes that it will only be called in parallel - // with other "pop" operations (no pushes). - MemRegion pop_lock_free(); - -#if 0 - // The routines that manipulate the region stack with a lock are - // not currently used. They should be retained, however, as a - // diagnostic aid. - - // These two are the implementations that use a lock. They can be - // called concurrently with each other but they should not be called - // concurrently with the lock-free versions (push() / pop()). - void push_with_lock(MemRegion mr); - MemRegion pop_with_lock(); -#endif - - bool isEmpty() { return _index == 0; } - bool isFull() { return _index == _capacity; } - - bool overflow() { return _overflow; } - void clear_overflow() { _overflow = false; } - - int size() { return _index; } - - // It iterates over the entries in the region stack and it - // invalidates (i.e. assigns MemRegion()) the ones that point to - // regions in the collection set. - bool invalidate_entries_into_cset(); - - // This gives an upper bound up to which the iteration in - // invalidate_entries_into_cset() will reach. This prevents - // newly-added entries to be unnecessarily scanned. - void set_oops_do_bound() { - _oops_do_bound = _index; - } - - void setEmpty() { _index = 0; clear_overflow(); } -}; - class ForceOverflowSettings VALUE_OBJ_CLASS_SPEC { private: #ifndef PRODUCT @@ -408,7 +347,6 @@ friend class ConcurrentMarkThread; friend class CMTask; friend class CMBitMapClosure; - friend class CSetMarkOopClosure; friend class CMGlobalObjectClosure; friend class CMRemarkTask; friend class CMConcurrentMarkingTask; @@ -443,7 +381,6 @@ CMBitMap _markBitMap2; CMBitMapRO* _prevMarkBitMap; // completed mark bitmap CMBitMap* _nextMarkBitMap; // under-construction mark bitmap - bool _at_least_one_mark_complete; BitMap _region_bm; BitMap _card_bm; @@ -457,7 +394,6 @@ // For gray objects CMMarkStack _markStack; // Grey objects behind global finger. - CMRegionStack _regionStack; // Grey regions behind global finger. HeapWord* volatile _finger; // the global finger, region aligned, // always points to the end of the // last claimed region @@ -502,18 +438,6 @@ // verbose level CMVerboseLevel _verbose_level; - // These two fields are used to implement the optimisation that - // avoids pushing objects on the global/region stack if there are - // no collection set regions above the lowest finger. - - // This is the lowest finger (among the global and local fingers), - // which is calculated before a new collection set is chosen. - HeapWord* _min_finger; - // If this flag is true, objects/regions that are marked below the - // finger should be pushed on the stack(s). If this is flag is - // false, it is safe not to push them on the stack(s). - bool _should_gray_objects; - // All of these times are in ms. NumberSeq _init_times; NumberSeq _remark_times; @@ -604,7 +528,7 @@ CMTaskQueueSet* task_queues() { return _task_queues; } // Access / manipulation of the overflow flag which is set to - // indicate that the global stack or region stack has overflown + // indicate that the global stack has overflown bool has_overflown() { return _has_overflown; } void set_has_overflown() { _has_overflown = true; } void clear_has_overflown() { _has_overflown = false; } @@ -684,68 +608,6 @@ bool mark_stack_overflow() { return _markStack.overflow(); } bool mark_stack_empty() { return _markStack.isEmpty(); } - // (Lock-free) Manipulation of the region stack - bool region_stack_push_lock_free(MemRegion mr) { - // Currently we only call the lock-free version during evacuation - // pauses. - assert(SafepointSynchronize::is_at_safepoint(), "world should be stopped"); - - _regionStack.push_lock_free(mr); - if (_regionStack.overflow()) { - set_has_overflown(); - return false; - } - return true; - } - - // Lock-free version of region-stack pop. Should only be - // called in tandem with other lock-free pops. - MemRegion region_stack_pop_lock_free() { - return _regionStack.pop_lock_free(); - } - -#if 0 - // The routines that manipulate the region stack with a lock are - // not currently used. They should be retained, however, as a - // diagnostic aid. - - bool region_stack_push_with_lock(MemRegion mr) { - // Currently we only call the lock-based version during either - // concurrent marking or remark. - assert(!SafepointSynchronize::is_at_safepoint() || !concurrent(), - "if we are at a safepoint it should be the remark safepoint"); - - _regionStack.push_with_lock(mr); - if (_regionStack.overflow()) { - set_has_overflown(); - return false; - } - return true; - } - - MemRegion region_stack_pop_with_lock() { - // Currently we only call the lock-based version during either - // concurrent marking or remark. - assert(!SafepointSynchronize::is_at_safepoint() || !concurrent(), - "if we are at a safepoint it should be the remark safepoint"); - - return _regionStack.pop_with_lock(); - } -#endif - - int region_stack_size() { return _regionStack.size(); } - bool region_stack_overflow() { return _regionStack.overflow(); } - bool region_stack_empty() { return _regionStack.isEmpty(); } - - // Iterate over any regions that were aborted while draining the - // region stack (any such regions are saved in the corresponding - // CMTask) and invalidate (i.e. assign to the empty MemRegion()) - // any regions that point into the collection set. - bool invalidate_aborted_regions_in_cset(); - - // Returns true if there are any aborted memory regions. - bool has_aborted_regions(); - CMRootRegions* root_regions() { return &_root_regions; } bool concurrent_marking_in_progress() { @@ -774,10 +636,6 @@ return _task_queues->steal(task_num, hash_seed, obj); } - // It grays an object by first marking it. Then, if it's behind the - // global finger, it also pushes it on the global stack. - void deal_with_reference(oop obj); - ConcurrentMark(ReservedSpace rs, int max_regions); ~ConcurrentMark(); @@ -810,22 +668,6 @@ inline void grayRoot(oop obj, size_t word_size, uint worker_id, HeapRegion* hr = NULL); - // It's used during evacuation pauses to gray a region, if - // necessary, and it's MT-safe. It assumes that the caller has - // marked any objects on that region. If _should_gray_objects is - // true and we're still doing concurrent marking, the region is - // pushed on the region stack, if it is located below the global - // finger, otherwise we do nothing. - void grayRegionIfNecessary(MemRegion mr); - - // It's used during evacuation pauses to mark and, if necessary, - // gray a single object and it's MT-safe. It assumes the caller did - // not mark the object. If _should_gray_objects is true and we're - // still doing concurrent marking, the objects is pushed on the - // global stack, if it is located below the global finger, otherwise - // we do nothing. - void markAndGrayObjectIfNecessary(oop p); - // It iterates over the heap and for each object it comes across it // will dump the contents of its reference fields, as well as // liveness information for the object and its referents. The dump @@ -869,10 +711,6 @@ // Do concurrent phase of marking, to a tentative transitive closure. void markFromRoots(); - // Process all unprocessed SATB buffers. It is called at the - // beginning of an evacuation pause. - void drainAllSATBBuffers(); - void checkpointRootsFinal(bool clear_all_soft_refs); void checkpointRootsFinalWork(); void cleanup(); @@ -899,10 +737,6 @@ _markStack.note_end_of_gc(); } - // Iterate over the oops in the mark stack and all local queues. It - // also calls invalidate_entries_into_cset() on the region stack. - void oops_do(OopClosure* f); - // Verify that there are no CSet oops on the stacks (taskqueues / // global mark stack), enqueued SATB buffers, per-thread SATB // buffers, and fingers (global / per-task). The boolean parameters @@ -919,40 +753,6 @@ // unless the force parameter is true. void update_g1_committed(bool force = false); - void complete_marking_in_collection_set(); - - // It indicates that a new collection set is being chosen. - void newCSet(); - - // It registers a collection set heap region with CM. This is used - // to determine whether any heap regions are located above the finger. - void registerCSetRegion(HeapRegion* hr); - - // Resets the region fields of any active CMTask whose region fields - // are in the collection set (i.e. the region currently claimed by - // the CMTask will be evacuated and may be used, subsequently, as - // an alloc region). When this happens the region fields in the CMTask - // are stale and, hence, should be cleared causing the worker thread - // to claim a new region. - void reset_active_task_region_fields_in_cset(); - - // Registers the maximum region-end associated with a set of - // regions with CM. Again this is used to determine whether any - // heap regions are located above the finger. - void register_collection_set_finger(HeapWord* max_finger) { - // max_finger is the highest heap region end of the regions currently - // contained in the collection set. If this value is larger than - // _min_finger then we need to gray objects. - // This routine is like registerCSetRegion but for an entire - // collection of regions. - if (max_finger > _min_finger) { - _should_gray_objects = true; - } - } - - // Returns "true" if at least one mark has been completed. - bool at_least_one_mark_complete() { return _at_least_one_mark_complete; } - bool isMarked(oop p) const { assert(p != NULL && p->is_oop(), "expected an oop"); HeapWord* addr = (HeapWord*)p; @@ -1164,23 +964,6 @@ // limit of the region this task is scanning, NULL if we're not scanning one HeapWord* _region_limit; - // This is used only when we scan regions popped from the region - // stack. It records what the last object on such a region we - // scanned was. It is used to ensure that, if we abort region - // iteration, we do not rescan the first part of the region. This - // should be NULL when we're not scanning a region from the region - // stack. - HeapWord* _region_finger; - - // If we abort while scanning a region we record the remaining - // unscanned portion and check this field when marking restarts. - // This avoids having to push on the region stack while other - // marking threads may still be popping regions. - // If we were to push the unscanned portion directly to the - // region stack then we would need to using locking versions - // of the push and pop operations. - MemRegion _aborted_region; - // the number of words this task has scanned size_t _words_scanned; // When _words_scanned reaches this limit, the regular clock is @@ -1268,8 +1051,6 @@ int _global_transfers_to; int _global_transfers_from; - int _region_stack_pops; - int _regions_claimed; int _objs_found_on_bitmap; @@ -1347,15 +1128,6 @@ bool has_timed_out() { return _has_timed_out; } bool claimed() { return _claimed; } - // Support routines for the partially scanned region that may be - // recorded as a result of aborting while draining the CMRegionStack - MemRegion aborted_region() { return _aborted_region; } - void set_aborted_region(MemRegion mr) - { _aborted_region = mr; } - - // Clears any recorded partially scanned region - void clear_aborted_region() { set_aborted_region(MemRegion()); } - void set_cm_oop_closure(G1CMOopClosure* cm_oop_closure); // It grays the object by marking it and, if necessary, pushing it @@ -1385,22 +1157,12 @@ // buffers are available. void drain_satb_buffers(); - // It keeps popping regions from the region stack and processing - // them until the region stack is empty. - void drain_region_stack(BitMapClosure* closure); - // moves the local finger to a new location inline void move_finger_to(HeapWord* new_finger) { assert(new_finger >= _finger && new_finger < _region_limit, "invariant"); _finger = new_finger; } - // moves the region finger to a new location - inline void move_region_finger_to(HeapWord* new_finger) { - assert(new_finger < _cm->finger(), "invariant"); - _region_finger = new_finger; - } - CMTask(int task_num, ConcurrentMark *cm, size_t* marked_bytes, BitMap* card_bm, CMTaskQueue* task_queue, CMTaskQueueSet* task_queues);