< prev index next > src/hotspot/share/gc/g1/g1ParScanThreadState.hpp
Print this page
#include "gc/g1/g1YoungGCAllocationFailureInjector.hpp"
#include "gc/shared/ageTable.hpp"
#include "gc/shared/copyFailedInfo.hpp"
#include "gc/shared/gc_globals.hpp"
#include "gc/shared/partialArrayTaskStepper.hpp"
- #include "gc/shared/preservedMarks.hpp"
#include "gc/shared/stringdedup/stringDedup.hpp"
#include "gc/shared/taskqueue.hpp"
#include "memory/allocation.hpp"
#include "oops/oop.hpp"
#include "utilities/ticks.hpp"
class G1EvacFailureRegions;
class G1EvacuationRootClosures;
class G1OopStarChunkedList;
class G1PLABAllocator;
class G1HeapRegion;
- class PreservedMarks;
- class PreservedMarksSet;
class outputStream;
class G1ParScanThreadState : public CHeapObj<mtGC> {
G1CollectedHeap* _g1h;
G1ScannerTasksQueue* _task_queue;
size_t* _obj_alloc_stat;
// Per-thread evacuation failure data structures.
ALLOCATION_FAILURE_INJECTOR_ONLY(size_t _allocation_failure_inject_counter;)
- PreservedMarks* _preserved_marks;
EvacuationFailedInfo _evacuation_failed_info;
G1EvacFailureRegions* _evac_failure_regions;
// Number of additional cards into evacuation failed regions enqueued into
// the local DCQS. This is an approximation, as cards that would be added later
// outside of evacuation failure will not be subtracted again.
bool inject_allocation_failure(uint region_idx) ALLOCATION_FAILURE_INJECTOR_RETURN_( return false; );
public:
G1ParScanThreadState(G1CollectedHeap* g1h,
G1RedirtyCardsQueueSet* rdcqs,
- PreservedMarks* preserved_marks,
uint worker_id,
uint num_workers,
G1CollectionSet* collection_set,
G1EvacFailureRegions* evac_failure_regions);
virtual ~G1ParScanThreadState();
private:
void do_partial_array(PartialArrayScanTask task);
void start_partial_objarray(G1HeapRegionAttr dest_dir, oop from, oop to);
HeapWord* allocate_copy_slow(G1HeapRegionAttr* dest_attr,
! oop old,
size_t word_sz,
uint age,
uint node_index);
void undo_allocation(G1HeapRegionAttr dest_addr,
private:
void do_partial_array(PartialArrayScanTask task);
void start_partial_objarray(G1HeapRegionAttr dest_dir, oop from, oop to);
HeapWord* allocate_copy_slow(G1HeapRegionAttr* dest_attr,
! Klass* klass,
size_t word_sz,
uint age,
uint node_index);
void undo_allocation(G1HeapRegionAttr dest_addr,
uint node_index);
inline G1HeapRegionAttr next_region_attr(G1HeapRegionAttr const region_attr, markWord const m, uint& age);
void report_promotion_event(G1HeapRegionAttr const dest_attr,
! oop const old, size_t word_sz, uint age,
HeapWord * const obj_ptr, uint node_index) const;
void trim_queue_to_threshold(uint threshold);
inline bool needs_partial_trimming() const;
uint node_index);
inline G1HeapRegionAttr next_region_attr(G1HeapRegionAttr const region_attr, markWord const m, uint& age);
void report_promotion_event(G1HeapRegionAttr const dest_attr,
! Klass* klass, size_t word_sz, uint age,
HeapWord * const obj_ptr, uint node_index) const;
void trim_queue_to_threshold(uint threshold);
inline bool needs_partial_trimming() const;
class G1ParScanThreadStateSet : public StackObj {
G1CollectedHeap* _g1h;
G1CollectionSet* _collection_set;
G1RedirtyCardsQueueSet _rdcqs;
- PreservedMarksSet _preserved_marks_set;
G1ParScanThreadState** _states;
BufferNodeList* _rdc_buffers;
size_t* _surviving_young_words_total;
uint _num_workers;
bool _flushed;
G1EvacFailureRegions* evac_failure_regions);
~G1ParScanThreadStateSet();
G1RedirtyCardsQueueSet* rdcqs() { return &_rdcqs; }
BufferNodeList* rdc_buffers() { return _rdc_buffers; }
- PreservedMarksSet* preserved_marks_set() { return &_preserved_marks_set; }
void flush_stats();
void record_unused_optional_region(G1HeapRegion* hr);
G1ParScanThreadState* state_for_worker(uint worker_id);
< prev index next >