< prev index next >

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

Print this page

        

*** 47,57 **** G1RemSet* _g1_rem; G1ParGCAllocator* _g1_par_allocator; ageTable _age_table; ! G1ParScanClosure _scanner; size_t _alloc_buffer_waste; size_t _undo_waste; --- 47,59 ---- G1RemSet* _g1_rem; G1ParGCAllocator* _g1_par_allocator; ageTable _age_table; ! InCSetState _dest[InCSetState::Num]; ! // Local tenuring threshold. ! uint _tenuring_threshold; G1ParScanClosure _scanner; size_t _alloc_buffer_waste; size_t _undo_waste;
*** 80,89 **** --- 82,99 ---- void add_to_undo_waste(size_t waste) { _undo_waste += waste; } DirtyCardQueue& dirty_card_queue() { return _dcq; } G1SATBCardTableModRefBS* ctbs() { return _ct_bs; } + InCSetState dest(InCSetState original) const { + assert(original.is_valid(), + err_msg("Original state invalid: " CSETSTATE_FORMAT, original.value())); + assert(_dest[original.value()].is_valid_gen(), + err_msg("Dest state is invalid: " CSETSTATE_FORMAT, _dest[original.value()].value())); + return _dest[original.value()]; + } + public: G1ParScanThreadState(G1CollectedHeap* g1h, uint queue_num, ReferenceProcessor* rp); ~G1ParScanThreadState(); ageTable* age_table() { return &_age_table; }
*** 110,120 **** if (ctbs()->mark_card_deferred(card_index)) { dirty_card_queue().enqueue((jbyte*)ctbs()->byte_for_index(card_index)); } } } - public: void set_evac_failure_closure(OopsInHeapRegionClosure* evac_failure_cl) { _evac_failure_cl = evac_failure_cl; } --- 120,129 ----
*** 191,203 **** template <class T> inline void do_oop_evac(T* p, HeapRegion* from); template <class T> inline void deal_with_reference(T* ref_to_scan); inline void dispatch_reference(StarTask ref); public: ! oop copy_to_survivor_space(oop const obj, markOop const old_mark); void trim_queue(); inline void steal_and_trim_queue(RefToScanQueueSet *task_queues); }; --- 200,223 ---- template <class T> inline void do_oop_evac(T* p, HeapRegion* from); template <class T> inline void deal_with_reference(T* ref_to_scan); inline void dispatch_reference(StarTask ref); + + // Tries to allocate word_sz in the PLAB of the next "generation" after trying to + // allocate into dest. State is the original (source) cset state for the object + // that is allocated for. + // Returns a non-NULL pointer if successful, and updates dest if required. + HeapWord* allocate_in_next_plab(InCSetState const state, + InCSetState* dest, + size_t word_sz, + AllocationContext_t const context); + + inline InCSetState next_state(InCSetState const state, markOop const m, uint& age); public: ! oop copy_to_survivor_space(InCSetState const state, oop const obj, markOop const old_mark); void trim_queue(); inline void steal_and_trim_queue(RefToScanQueueSet *task_queues); };
< prev index next >