44
45 class G1ParScanThreadState : public CHeapObj<mtGC> {
46 G1CollectedHeap* _g1h;
47 RefToScanQueue* _refs;
48 DirtyCardQueue _dcq;
49 G1CardTable* _ct;
50 G1EvacuationRootClosures* _closures;
51
52 G1PLABAllocator* _plab_allocator;
53
54 AgeTable _age_table;
55 InCSetState _dest[InCSetState::Num];
56 // Local tenuring threshold.
57 uint _tenuring_threshold;
58 G1ScanEvacuatedObjClosure _scanner;
59
60 int _hash_seed;
61 uint _worker_id;
62
63 // Upper and lower threshold to start and end work queue draining.
64 uint const _stack_drain_upper_threshold;
65 uint const _stack_drain_lower_threshold;
66
67 Tickspan _trim_ticks;
68 // Map from young-age-index (0 == not young, 1 is youngest) to
69 // surviving words. base is what we get back from the malloc call
70 size_t* _surviving_young_words_base;
71 // this points into the array, as we use the first few entries for padding
72 size_t* _surviving_young_words;
73
74 // Indicates whether in the last generation (old) there is no more space
75 // available for allocation.
76 bool _old_gen_is_full;
77
78 #define PADDING_ELEM_NUM (DEFAULT_CACHE_LINE_SIZE / sizeof(size_t))
79
80 DirtyCardQueue& dirty_card_queue() { return _dcq; }
81 G1CardTable* ct() { return _ct; }
82
83 InCSetState dest(InCSetState original) const {
84 assert(original.is_valid(),
85 "Original state invalid: " CSETSTATE_FORMAT, original.value());
|
44
45 class G1ParScanThreadState : public CHeapObj<mtGC> {
46 G1CollectedHeap* _g1h;
47 RefToScanQueue* _refs;
48 DirtyCardQueue _dcq;
49 G1CardTable* _ct;
50 G1EvacuationRootClosures* _closures;
51
52 G1PLABAllocator* _plab_allocator;
53
54 AgeTable _age_table;
55 InCSetState _dest[InCSetState::Num];
56 // Local tenuring threshold.
57 uint _tenuring_threshold;
58 G1ScanEvacuatedObjClosure _scanner;
59
60 int _hash_seed;
61 uint _worker_id;
62
63 // Upper and lower threshold to start and end work queue draining.
64 uint const _stack_trim_upper_threshold;
65 uint const _stack_trim_lower_threshold;
66
67 Tickspan _trim_ticks;
68 // Map from young-age-index (0 == not young, 1 is youngest) to
69 // surviving words. base is what we get back from the malloc call
70 size_t* _surviving_young_words_base;
71 // this points into the array, as we use the first few entries for padding
72 size_t* _surviving_young_words;
73
74 // Indicates whether in the last generation (old) there is no more space
75 // available for allocation.
76 bool _old_gen_is_full;
77
78 #define PADDING_ELEM_NUM (DEFAULT_CACHE_LINE_SIZE / sizeof(size_t))
79
80 DirtyCardQueue& dirty_card_queue() { return _dcq; }
81 G1CardTable* ct() { return _ct; }
82
83 InCSetState dest(InCSetState original) const {
84 assert(original.is_valid(),
85 "Original state invalid: " CSETSTATE_FORMAT, original.value());
|