|
64 | 64 | import org.graalvm.visualvm.heapviewer.ui.TreeTableView;
|
65 | 65 | import org.graalvm.visualvm.heapviewer.ui.TreeTableViewColumn;
|
66 | 66 | import org.graalvm.visualvm.heapviewer.ui.UIThresholds;
|
| 67 | +import org.graalvm.visualvm.heapviewer.utils.ExcludingIterator; |
67 | 68 | import org.graalvm.visualvm.heapviewer.utils.NodesComputer;
|
68 | 69 | import org.graalvm.visualvm.heapviewer.utils.ProgressIterator;
|
69 | 70 | import org.graalvm.visualvm.heapviewer.utils.counters.InstanceCounter;
|
@@ -564,7 +565,7 @@ public boolean isLeaf() {
|
564 | 565 | };
|
565 | 566 | }
|
566 | 567 | protected ProgressIterator<Instance> objectsIterator(int index, Progress progress) {
|
567 |
| - Iterator<Instance> fieldInstanceIterator = new ExcludingInstancesIterator(instancesIterator()) { |
| 568 | + Iterator<Instance> fieldInstanceIterator = new ExcludingIterator<Instance>(instancesIterator()) { |
568 | 569 | @Override
|
569 | 570 | protected boolean exclude(Instance instance) {
|
570 | 571 | FieldValue value = getValueOfField(instance, fieldName);
|
@@ -670,7 +671,7 @@ public boolean isLeaf() {
|
670 | 671 | }
|
671 | 672 | protected ProgressIterator<Instance> objectsIterator(int index, Progress progress) {
|
672 | 673 | final Instance _instance = getInstance();
|
673 |
| - Iterator<Instance> fieldInstanceIterator = new ExcludingInstancesIterator(instancesIterator()) { |
| 674 | + Iterator<Instance> fieldInstanceIterator = new ExcludingIterator<Instance>(instancesIterator()) { |
674 | 675 | @Override
|
675 | 676 | protected boolean exclude(Instance instance) {
|
676 | 677 | FieldValue value = getValueOfField(instance, fieldName);
|
@@ -777,40 +778,6 @@ public String getShortName() {
|
777 | 778 |
|
778 | 779 | }
|
779 | 780 |
|
780 |
| - // copied from org.graalvm.visualvm.heapviewer.truffle.TruffleLanguageHeapFragment |
781 |
| - // might become a public API in VisualVM-HeapViewer |
782 |
| - protected static abstract class ExcludingInstancesIterator implements Iterator<Instance> { |
783 |
| - private final Iterator<Instance> instancesIt; |
784 |
| - private Instance next; |
785 |
| - |
786 |
| - protected ExcludingInstancesIterator(Iterator<Instance> it) { |
787 |
| - instancesIt = it; |
788 |
| - computeNext(); |
789 |
| - } |
790 |
| - |
791 |
| - @Override |
792 |
| - public boolean hasNext() { |
793 |
| - return next != null; |
794 |
| - } |
795 |
| - |
796 |
| - @Override |
797 |
| - public Instance next() { |
798 |
| - Instance ret = next; |
799 |
| - computeNext(); |
800 |
| - return ret; |
801 |
| - } |
802 |
| - |
803 |
| - private void computeNext() { |
804 |
| - while (instancesIt.hasNext()) { |
805 |
| - next = instancesIt.next(); |
806 |
| - if (!exclude(next)) return; |
807 |
| - } |
808 |
| - next = null; |
809 |
| - } |
810 |
| - |
811 |
| - protected abstract boolean exclude(Instance instance); |
812 |
| - } |
813 |
| - |
814 | 781 |
|
815 | 782 | @ServiceProvider(service=HeapViewerRenderer.Provider.class)
|
816 | 783 | public static class FieldsHistogramRendererProvider extends HeapViewerRenderer.Provider {
|
|
0 commit comments