52
53 G1PLABAllocator* _plab_allocator;
54
55 AgeTable _age_table;
56 G1HeapRegionAttr _dest[G1HeapRegionAttr::Num];
57 // Local tenuring threshold.
58 uint _tenuring_threshold;
59 G1ScanEvacuatedObjClosure _scanner;
60
61 uint _worker_id;
62
63 // Remember the last enqueued card to avoid enqueuing the same card over and over;
64 // since we only ever scan a card once, this is sufficient.
65 size_t _last_enqueued_card;
66
67 // Upper and lower threshold to start and end work queue draining.
68 uint const _stack_trim_upper_threshold;
69 uint const _stack_trim_lower_threshold;
70
71 Tickspan _trim_ticks;
72 // Map from young-age-index (0 == not young, 1 is youngest) to
73 // surviving words. base is what we get back from the malloc call
74 size_t* _surviving_young_words_base;
75 // this points into the array, as we use the first few entries for padding
76 size_t* _surviving_young_words;
77 // Number of elements in the array above.
78 size_t _surviving_words_length;
79 // Indicates whether in the last generation (old) there is no more space
80 // available for allocation.
81 bool _old_gen_is_full;
82
83 #define PADDING_ELEM_NUM (DEFAULT_CACHE_LINE_SIZE / sizeof(size_t))
84
85 G1RedirtyCardsQueue& redirty_cards_queue() { return _rdcq; }
86 G1CardTable* ct() { return _ct; }
87
88 G1HeapRegionAttr dest(G1HeapRegionAttr original) const {
89 assert(original.is_valid(),
90 "Original region attr invalid: %s", original.get_type_str());
91 assert(_dest[original.type()].is_valid_gen(),
|
52
53 G1PLABAllocator* _plab_allocator;
54
55 AgeTable _age_table;
56 G1HeapRegionAttr _dest[G1HeapRegionAttr::Num];
57 // Local tenuring threshold.
58 uint _tenuring_threshold;
59 G1ScanEvacuatedObjClosure _scanner;
60
61 uint _worker_id;
62
63 // Remember the last enqueued card to avoid enqueuing the same card over and over;
64 // since we only ever scan a card once, this is sufficient.
65 size_t _last_enqueued_card;
66
67 // Upper and lower threshold to start and end work queue draining.
68 uint const _stack_trim_upper_threshold;
69 uint const _stack_trim_lower_threshold;
70
71 Tickspan _trim_ticks;
72
73 // The amount of actually copied words into the survivor regions during evacuation.
74 size_t _surviving_survivor_words;
75 // Map from young-age-index (0 == not young, 1 is youngest) to
76 // surviving words. base is what we get back from the malloc call
77 size_t* _surviving_young_words_base;
78 // this points into the array, as we use the first few entries for padding
79 size_t* _surviving_young_words;
80 // Number of elements in the array above.
81 size_t _surviving_words_length;
82 // Indicates whether in the last generation (old) there is no more space
83 // available for allocation.
84 bool _old_gen_is_full;
85
86 #define PADDING_ELEM_NUM (DEFAULT_CACHE_LINE_SIZE / sizeof(size_t))
87
88 G1RedirtyCardsQueue& redirty_cards_queue() { return _rdcq; }
89 G1CardTable* ct() { return _ct; }
90
91 G1HeapRegionAttr dest(G1HeapRegionAttr original) const {
92 assert(original.is_valid(),
93 "Original region attr invalid: %s", original.get_type_str());
94 assert(_dest[original.type()].is_valid_gen(),
|