167 return NULL;
168 }
169
170 class FindRegionClosure : public ShenandoahHeapRegionClosure {
171 ShenandoahHeapRegion* _query;
172 bool _result;
173 public:
174
175 FindRegionClosure(ShenandoahHeapRegion* query) : _query(query), _result(false) {}
176
177 bool doHeapRegion(ShenandoahHeapRegion* r) {
178 _result = (r == _query);
179 return _result;
180 }
181
182 bool result() { return _result;}
183 };
184
185 bool ShenandoahHeapRegionSet::contains(ShenandoahHeapRegion* r) {
186 FindRegionClosure cl(r);
187 unclaimed_heap_region_iterate(&cl);
188 return cl.result();
189 }
190
191 HeapWord* ShenandoahHeapRegionSet::bottom() const {
192 return get(0)->bottom();
193 }
194
195 HeapWord* ShenandoahHeapRegionSet::end() const {
196 return get(_active_end - 1)->end();
197 }
198
199 ShenandoahHeapRegion* ShenandoahHeapRegionSet::get(size_t i) const {
200 if (i < _active_end) {
201 return _regions[i];
202 } else {
203 return NULL;
204 }
205 }
206
207 ShenandoahHeapRegion* ShenandoahHeapRegionSet::current() const {
|
167 return NULL;
168 }
169
170 class FindRegionClosure : public ShenandoahHeapRegionClosure {
171 ShenandoahHeapRegion* _query;
172 bool _result;
173 public:
174
175 FindRegionClosure(ShenandoahHeapRegion* query) : _query(query), _result(false) {}
176
177 bool doHeapRegion(ShenandoahHeapRegion* r) {
178 _result = (r == _query);
179 return _result;
180 }
181
182 bool result() { return _result;}
183 };
184
185 bool ShenandoahHeapRegionSet::contains(ShenandoahHeapRegion* r) {
186 FindRegionClosure cl(r);
187 active_heap_region_iterate(&cl);
188 return cl.result();
189 }
190
191 HeapWord* ShenandoahHeapRegionSet::bottom() const {
192 return get(0)->bottom();
193 }
194
195 HeapWord* ShenandoahHeapRegionSet::end() const {
196 return get(_active_end - 1)->end();
197 }
198
199 ShenandoahHeapRegion* ShenandoahHeapRegionSet::get(size_t i) const {
200 if (i < _active_end) {
201 return _regions[i];
202 } else {
203 return NULL;
204 }
205 }
206
207 ShenandoahHeapRegion* ShenandoahHeapRegionSet::current() const {
|