111 size_t alloc_buffer_waste() const { return _alloc_buffer_waste; } 112 size_t undo_waste() const { return _undo_waste; } 113 114 #ifdef ASSERT 115 bool queue_is_empty() const { return _refs->is_empty(); } 116 117 bool verify_ref(narrowOop* ref) const; 118 bool verify_ref(oop* ref) const; 119 bool verify_task(StarTask ref) const; 120 #endif // ASSERT 121 122 template <class T> void push_on_queue(T* ref) { 123 assert(verify_ref(ref), "sanity"); 124 _refs->push(ref); 125 } 126 127 template <class T> inline void update_rs(HeapRegion* from, T* p, int tid); 128 129 private: 130 131 inline HeapWord* allocate(GCAllocPurpose purpose, size_t word_sz); 132 inline HeapWord* allocate_slow(GCAllocPurpose purpose, size_t word_sz); 133 inline void undo_allocation(GCAllocPurpose purpose, HeapWord* obj, size_t word_sz); 134 135 public: 136 137 void set_evac_failure_closure(OopsInHeapRegionClosure* evac_failure_cl) { 138 _evac_failure_cl = evac_failure_cl; 139 } 140 141 OopsInHeapRegionClosure* evac_failure_closure() { return _evac_failure_cl; } 142 143 int* hash_seed() { return &_hash_seed; } 144 uint queue_num() { return _queue_num; } 145 146 size_t term_attempts() const { return _term_attempts; } 147 void note_term_attempt() { _term_attempts++; } 148 149 void start_strong_roots() { 150 _start_strong_roots = os::elapsedTime(); 151 } 152 void end_strong_roots() { | 111 size_t alloc_buffer_waste() const { return _alloc_buffer_waste; } 112 size_t undo_waste() const { return _undo_waste; } 113 114 #ifdef ASSERT 115 bool queue_is_empty() const { return _refs->is_empty(); } 116 117 bool verify_ref(narrowOop* ref) const; 118 bool verify_ref(oop* ref) const; 119 bool verify_task(StarTask ref) const; 120 #endif // ASSERT 121 122 template <class T> void push_on_queue(T* ref) { 123 assert(verify_ref(ref), "sanity"); 124 _refs->push(ref); 125 } 126 127 template <class T> inline void update_rs(HeapRegion* from, T* p, int tid); 128 129 private: 130 131 inline HeapWord* allocate(GCAllocPurpose purpose, oop const old, uint age); 132 inline HeapWord* allocate_slow(GCAllocPurpose purpose, oop const old, uint age); 133 inline void undo_allocation(GCAllocPurpose purpose, HeapWord* obj, size_t word_sz); 134 135 public: 136 137 void set_evac_failure_closure(OopsInHeapRegionClosure* evac_failure_cl) { 138 _evac_failure_cl = evac_failure_cl; 139 } 140 141 OopsInHeapRegionClosure* evac_failure_closure() { return _evac_failure_cl; } 142 143 int* hash_seed() { return &_hash_seed; } 144 uint queue_num() { return _queue_num; } 145 146 size_t term_attempts() const { return _term_attempts; } 147 void note_term_attempt() { _term_attempts++; } 148 149 void start_strong_roots() { 150 _start_strong_roots = os::elapsedTime(); 151 } 152 void end_strong_roots() { |