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