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) {