Add field/method skipping helper functions to DexFile

Specifically added SkipStaticFields, SkipInstanceFields,
SkipAllFields, SkipStaticMethods, and SkipVirtualMethods.

Also applied the helpers to the code base.

Test: test-art-host
Change-Id: Idda77f9a6e2564c2e588d2bbe11cc320063fdb32
diff --git a/compiler/dex/dex_to_dex_decompiler_test.cc b/compiler/dex/dex_to_dex_decompiler_test.cc
index 7eaba96..88426a3 100644
--- a/compiler/dex/dex_to_dex_decompiler_test.cc
+++ b/compiler/dex/dex_to_dex_decompiler_test.cc
@@ -82,13 +82,7 @@
         continue;
       }
       ClassDataItemIterator it(*updated_dex_file, class_data);
-      // Skip fields
-      while (it.HasNextStaticField()) {
-        it.Next();
-      }
-      while (it.HasNextInstanceField()) {
-        it.Next();
-      }
+      it.SkipAllFields();
 
       // Unquicken each method.
       while (it.HasNextDirectMethod()) {
diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc
index ea53ef0..622448f 100644
--- a/compiler/driver/compiler_driver.cc
+++ b/compiler/driver/compiler_driver.cc
@@ -808,13 +808,7 @@
       }
 
       ClassDataItemIterator it(*dex_file, class_data);
-      // Skip fields
-      while (it.HasNextStaticField()) {
-        it.Next();
-      }
-      while (it.HasNextInstanceField()) {
-        it.Next();
-      }
+      it.SkipAllFields();
 
       bool compilation_enabled = driver->IsClassToCompile(
           dex_file->StringByTypeIdx(class_def.class_idx_));
@@ -1661,9 +1655,7 @@
     return false;
   }
   ClassDataItemIterator it(dex_file, class_data);
-  while (it.HasNextStaticField()) {
-    it.Next();
-  }
+  it.SkipStaticFields();
   // We require a constructor barrier if there are final instance fields.
   while (it.HasNextInstanceField()) {
     if (it.MemberIsFinal()) {
@@ -1873,13 +1865,7 @@
     return;
   }
   ClassDataItemIterator it(dex_file, class_data);
-  // Skip fields
-  while (it.HasNextStaticField()) {
-    it.Next();
-  }
-  while (it.HasNextInstanceField()) {
-    it.Next();
-  }
+  it.SkipAllFields();
 
   while (it.HasNextDirectMethod()) {
     verification_results->CreateVerifiedMethodFor(MethodReference(&dex_file, it.GetMemberIndex()));
@@ -2778,13 +2764,7 @@
         GetDexToDexCompilationLevel(soa.Self(), *driver, jclass_loader, dex_file, class_def);
 
     ClassDataItemIterator it(dex_file, class_data);
-    // Skip fields
-    while (it.HasNextStaticField()) {
-      it.Next();
-    }
-    while (it.HasNextInstanceField()) {
-      it.Next();
-    }
+    it.SkipAllFields();
 
     bool compilation_enabled = driver->IsClassToCompile(
         dex_file.StringByTypeIdx(class_def.class_idx_));
diff --git a/compiler/oat_writer.cc b/compiler/oat_writer.cc
index 1df9c48..f7465c0 100644
--- a/compiler/oat_writer.cc
+++ b/compiler/oat_writer.cc
@@ -1676,12 +1676,7 @@
         const uint8_t* class_data = dex_file->GetClassData(class_def);
         if (class_data != nullptr) {  // ie not an empty class, such as a marker interface
           ClassDataItemIterator it(*dex_file, class_data);
-          while (it.HasNextStaticField()) {
-            it.Next();
-          }
-          while (it.HasNextInstanceField()) {
-            it.Next();
-          }
+          it.SkipAllFields();
           size_t class_def_method_index = 0u;
           while (it.HasNextDirectMethod()) {
             if (!visitor->VisitMethod(class_def_method_index, it)) {
diff --git a/compiler/verifier_deps_test.cc b/compiler/verifier_deps_test.cc
index dd09fed..7e616a7 100644
--- a/compiler/verifier_deps_test.cc
+++ b/compiler/verifier_deps_test.cc
@@ -151,9 +151,7 @@
     CHECK(class_data != nullptr);
 
     ClassDataItemIterator it(*primary_dex_file_, class_data);
-    while (it.HasNextStaticField() || it.HasNextInstanceField()) {
-      it.Next();
-    }
+    it.SkipAllFields();
 
     ArtMethod* method = nullptr;
     while (it.HasNextDirectMethod()) {