src/share/vm/gc_implementation/g1/g1ParScanThreadState.hpp

changeset 7218
6948da6d7c13
parent 7118
227a9e5e4b4a
child 7645
f2e3f0e1f97d
     1.1 --- a/src/share/vm/gc_implementation/g1/g1ParScanThreadState.hpp	Wed Sep 10 11:55:33 2014 +0200
     1.2 +++ b/src/share/vm/gc_implementation/g1/g1ParScanThreadState.hpp	Tue Sep 30 09:44:36 2014 +0200
     1.3 @@ -82,20 +82,6 @@
     1.4    DirtyCardQueue& dirty_card_queue()             { return _dcq;  }
     1.5    G1SATBCardTableModRefBS* ctbs()                { return _ct_bs; }
     1.6  
     1.7 -  template <class T> inline void immediate_rs_update(HeapRegion* from, T* p, int tid);
     1.8 -
     1.9 -  template <class T> void deferred_rs_update(HeapRegion* from, T* p, int tid) {
    1.10 -    // If the new value of the field points to the same region or
    1.11 -    // is the to-space, we don't need to include it in the Rset updates.
    1.12 -    if (!from->is_in_reserved(oopDesc::load_decode_heap_oop(p)) && !from->is_survivor()) {
    1.13 -      size_t card_index = ctbs()->index_for(p);
    1.14 -      // If the card hasn't been added to the buffer, do it.
    1.15 -      if (ctbs()->mark_card_deferred(card_index)) {
    1.16 -        dirty_card_queue().enqueue((jbyte*)ctbs()->byte_for_index(card_index));
    1.17 -      }
    1.18 -    }
    1.19 -  }
    1.20 -
    1.21   public:
    1.22    G1ParScanThreadState(G1CollectedHeap* g1h, uint queue_num, ReferenceProcessor* rp);
    1.23    ~G1ParScanThreadState();
    1.24 @@ -115,8 +101,17 @@
    1.25      _refs->push(ref);
    1.26    }
    1.27  
    1.28 -  template <class T> inline void update_rs(HeapRegion* from, T* p, int tid);
    1.29 -
    1.30 +  template <class T> void update_rs(HeapRegion* from, T* p, int tid) {
    1.31 +    // If the new value of the field points to the same region or
    1.32 +    // is the to-space, we don't need to include it in the Rset updates.
    1.33 +    if (!from->is_in_reserved(oopDesc::load_decode_heap_oop(p)) && !from->is_survivor()) {
    1.34 +      size_t card_index = ctbs()->index_for(p);
    1.35 +      // If the card hasn't been added to the buffer, do it.
    1.36 +      if (ctbs()->mark_card_deferred(card_index)) {
    1.37 +        dirty_card_queue().enqueue((jbyte*)ctbs()->byte_for_index(card_index));
    1.38 +      }
    1.39 +   }
    1.40 +  }
    1.41   public:
    1.42  
    1.43    void set_evac_failure_closure(OopsInHeapRegionClosure* evac_failure_cl) {

mercurial