< prev index next >

src/share/vm/gc/shenandoah/shenandoahHeap.cpp

Print this page
rev 12638 : imported patch heuristics.patch

@@ -2168,5 +2168,30 @@
 
 
 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 >