< prev index next >
src/share/vm/gc/shenandoah/shenandoahHeap.cpp
Print this page
rev 12638 : imported patch heuristics.patch
*** 2168,2172 ****
--- 2168,2197 ----
GCTimer* ShenandoahHeap::gc_timer() const {
return _gc_timer;
}
+
+ class ShenandoahCountGarbageClosure : public ShenandoahHeapRegionClosure {
+ private:
+ size_t _garbage;
+ public:
+ ShenandoahCountGarbageClosure() : _garbage(0) {
+ }
+
+ bool doHeapRegion(ShenandoahHeapRegion* r) {
+ if (! r->is_humongous() && ! r->is_pinned() && ! r->in_collection_set()) {
+ _garbage += r->garbage();
+ }
+ return false;
+ }
+
+ size_t garbage() {
+ return _garbage;
+ }
+ };
+
+ size_t ShenandoahHeap::garbage() {
+ ShenandoahCountGarbageClosure cl;
+ heap_region_iterate(&cl);
+ return cl.garbage();
+ }
< prev index next >