public List instances()

in core/src/main/java/com/jetbrains/sa/jdi/ReferenceTypeImpl.java [487:516]


    public List<ObjectReferenceImpl> instances(long maxInstances) {
        if (!vm.canGetInstanceInfo()) {
            throw new UnsupportedOperationException(
                      "target does not support getting instances");
        }

        if (maxInstances < 0) {
            throw new IllegalArgumentException("maxInstances is less than zero: "
                                              + maxInstances);
        }

        if (isAbstract() || (this instanceof InterfaceTypeImpl)) {
            return Collections.emptyList();
        }
        final List<ObjectReferenceImpl> objects = new ArrayList<ObjectReferenceImpl>(0);

        final Address givenKls = CompatibilityHelper.INSTANCE.getAddress(saKlass);
        final long max = maxInstances;
        vm.saObjectHeap().iterate(new DefaultHeapVisitor() {
                private long instCount = 0;
                public boolean doObj(Oop oop) {
                    if (givenKls.equals(CompatibilityHelper.INSTANCE.getKlassAddress(oop))) {
                        objects.add(vm.objectMirror(oop));
                        instCount++;
                    }
                    return max > 0 && instCount >= max;
                }
            });
        return objects;
    }