Include interfaces in IterateOverInstancesOfClass

The JVMTI IterateOverInstancesOfClass would incorrectly not consider
any objects to be instances of interfaces. This is different from
other implementations of JVMTI.

Test: ./test.py --host
Bug: 143893600

Change-Id: Id5e8177f3f31c2fd4a064e3353a236b072dbb55a
diff --git a/openjdkjvmti/ti_heap.cc b/openjdkjvmti/ti_heap.cc
index bbb2ced..702a1c4 100644
--- a/openjdkjvmti/ti_heap.cc
+++ b/openjdkjvmti/ti_heap.cc
@@ -700,11 +700,6 @@
     return ERR(INVALID_CLASS);
   }
   art::Handle<art::mirror::Class> filter_klass(hs.NewHandle(klass_ptr->AsClass()));
-  if (filter_klass->IsInterface()) {
-    // nothing is an 'instance' of an interface so just return without walking anything.
-    return OK;
-  }
-
   ObjectTagTable* tag_table = ArtJvmTiEnv::AsArtJvmTiEnv(env)->object_tag_table.get();
   bool stop_reports = false;
   auto visitor = [&](art::mirror::Object* obj) REQUIRES_SHARED(art::Locks::mutator_lock_) {
diff --git a/test/906-iterate-heap/src/art/Test906.java b/test/906-iterate-heap/src/art/Test906.java
index 190f36f..b782c9b 100644
--- a/test/906-iterate-heap/src/art/Test906.java
+++ b/test/906-iterate-heap/src/art/Test906.java
@@ -91,17 +91,26 @@
   public static class Baz extends Bar {}
   public static class Alpha extends Bar {}
   public static class MISSING extends Baz {}
+  public interface Iface {}
+  public static class Beta implements Iface {}
+  public static class Gamma implements Iface {}
+  public static class Delta extends Beta {}
   private static void testIterateOverInstances() throws Exception {
     Object[] foos = GenTs(Foo.class);
     Object[] bars = GenTs(Bar.class);
     Object[] bazs = GenTs(Baz.class);
     Object[] alphas = GenTs(Alpha.class);
+    Object[] betas = GenTs(Beta.class);
+    Object[] gammas = GenTs(Gamma.class);
+    Object[] deltas = GenTs(Delta.class);
     checkEq(0, iterateOverInstancesCount(MISSING.class));
     checkEq(alphas.length, iterateOverInstancesCount(Alpha.class));
     checkEq(bazs.length, iterateOverInstancesCount(Baz.class));
     checkEq(bazs.length + alphas.length + bars.length, iterateOverInstancesCount(Bar.class));
     checkEq(bazs.length + alphas.length + bars.length + foos.length,
         iterateOverInstancesCount(Foo.class));
+    checkEq(betas.length + gammas.length + deltas.length,
+        iterateOverInstancesCount(Iface.class));
   }
 
   public static void doTest() throws Exception {