69 double _strong_roots_time; 70 double _start_term; 71 double _term_time; 72 73 // Map from young-age-index (0 == not young, 1 is youngest) to 74 // surviving words. base is what we get back from the malloc call 75 size_t* _surviving_young_words_base; 76 // this points into the array, as we use the first few entries for padding 77 size_t* _surviving_young_words; 78 79 #define PADDING_ELEM_NUM (DEFAULT_CACHE_LINE_SIZE / sizeof(size_t)) 80 81 void add_to_alloc_buffer_waste(size_t waste) { _alloc_buffer_waste += waste; } 82 void add_to_undo_waste(size_t waste) { _undo_waste += waste; } 83 84 DirtyCardQueue& dirty_card_queue() { return _dcq; } 85 G1SATBCardTableModRefBS* ctbs() { return _ct_bs; } 86 87 InCSetState dest(InCSetState original) const { 88 assert(original.is_valid(), 89 err_msg("Original state invalid: %d", original.value())); 90 assert(_dest[original.value()].is_valid_gen(), 91 err_msg("Dest state is invalid: %d", _dest[original.value()].value())); 92 return _dest[original.value()]; 93 } 94 95 public: 96 G1ParScanThreadState(G1CollectedHeap* g1h, uint queue_num, ReferenceProcessor* rp); 97 ~G1ParScanThreadState(); 98 99 ageTable* age_table() { return &_age_table; } 100 101 #ifdef ASSERT 102 bool queue_is_empty() const { return _refs->is_empty(); } 103 104 bool verify_ref(narrowOop* ref) const; 105 bool verify_ref(oop* ref) const; 106 bool verify_task(StarTask ref) const; 107 #endif // ASSERT 108 109 template <class T> void push_on_queue(T* ref) { 110 assert(verify_ref(ref), "sanity"); 111 _refs->push(ref); | 69 double _strong_roots_time; 70 double _start_term; 71 double _term_time; 72 73 // Map from young-age-index (0 == not young, 1 is youngest) to 74 // surviving words. base is what we get back from the malloc call 75 size_t* _surviving_young_words_base; 76 // this points into the array, as we use the first few entries for padding 77 size_t* _surviving_young_words; 78 79 #define PADDING_ELEM_NUM (DEFAULT_CACHE_LINE_SIZE / sizeof(size_t)) 80 81 void add_to_alloc_buffer_waste(size_t waste) { _alloc_buffer_waste += waste; } 82 void add_to_undo_waste(size_t waste) { _undo_waste += waste; } 83 84 DirtyCardQueue& dirty_card_queue() { return _dcq; } 85 G1SATBCardTableModRefBS* ctbs() { return _ct_bs; } 86 87 InCSetState dest(InCSetState original) const { 88 assert(original.is_valid(), 89 err_msg("Original state invalid: " CSETSTATE_FORMAT, original.value())); 90 assert(_dest[original.value()].is_valid_gen(), 91 err_msg("Dest state is invalid: " CSETSTATE_FORMAT, _dest[original.value()].value())); 92 return _dest[original.value()]; 93 } 94 95 public: 96 G1ParScanThreadState(G1CollectedHeap* g1h, uint queue_num, ReferenceProcessor* rp); 97 ~G1ParScanThreadState(); 98 99 ageTable* age_table() { return &_age_table; } 100 101 #ifdef ASSERT 102 bool queue_is_empty() const { return _refs->is_empty(); } 103 104 bool verify_ref(narrowOop* ref) const; 105 bool verify_ref(oop* ref) const; 106 bool verify_task(StarTask ref) const; 107 #endif // ASSERT 108 109 template <class T> void push_on_queue(T* ref) { 110 assert(verify_ref(ref), "sanity"); 111 _refs->push(ref); |