Use code item accessors in dex file verifier

Motivation: Remove the code item friend keyword here.

Bug: 63756964
Test: test-art-host

Change-Id: I9f89c9a1ea5ed861f7ced6fa5546ff1c51b46b68
diff --git a/runtime/dex_file.h b/runtime/dex_file.h
index 3ca9908..e80a13c 100644
--- a/runtime/dex_file.h
+++ b/runtime/dex_file.h
@@ -346,7 +346,6 @@
     friend class CodeItemDebugInfoAccessor;
     friend class CodeItemInstructionAccessor;
     friend class DexFile;  // TODO: Remove this one when it's cleaned up.
-    friend class DexFileVerifier;
     friend class VdexFile;  // TODO: Remove this one when it's cleaned up.
     DISALLOW_COPY_AND_ASSIGN(CodeItem);
   };
diff --git a/runtime/dex_file_verifier.cc b/runtime/dex_file_verifier.cc
index edf5650..8656bcc 100644
--- a/runtime/dex_file_verifier.cc
+++ b/runtime/dex_file_verifier.cc
@@ -23,6 +23,7 @@
 
 #include "android-base/stringprintf.h"
 
+#include "code_item_accessors-no_art-inl.h"
 #include "dex_file-inl.h"
 #include "experimental_flags.h"
 #include "leb128.h"
@@ -572,7 +573,8 @@
 
 bool DexFileVerifier::CheckAndGetHandlerOffsets(const DexFile::CodeItem* code_item,
                                                 uint32_t* handler_offsets, uint32_t handlers_size) {
-  const uint8_t* handlers_base = DexFile::GetCatchHandlerData(*code_item, 0);
+  CodeItemDataAccessor accessor(dex_file_, code_item);
+  const uint8_t* handlers_base = accessor.GetCatchHandlerData();
 
   for (uint32_t i = 0; i < handlers_size; i++) {
     bool catch_all;
@@ -600,7 +602,7 @@
       }
 
       DECODE_UNSIGNED_CHECKED_FROM(ptr_, addr);
-      if (UNLIKELY(addr >= code_item->insns_size_in_code_units_)) {
+      if (UNLIKELY(addr >= accessor.InsnsSizeInCodeUnits())) {
         ErrorStringPrintf("Invalid handler addr: %x", addr);
         return false;
       }
@@ -608,7 +610,7 @@
 
     if (catch_all) {
       DECODE_UNSIGNED_CHECKED_FROM(ptr_, addr);
-      if (UNLIKELY(addr >= code_item->insns_size_in_code_units_)) {
+      if (UNLIKELY(addr >= accessor.InsnsSizeInCodeUnits())) {
         ErrorStringPrintf("Invalid handler catch_all_addr: %x", addr);
         return false;
       }
@@ -1224,14 +1226,14 @@
     return false;
   }
 
-  if (UNLIKELY(code_item->ins_size_ > code_item->registers_size_)) {
+  CodeItemDataAccessor accessor(dex_file_, code_item);
+  if (UNLIKELY(accessor.InsSize() > accessor.RegistersSize())) {
     ErrorStringPrintf("ins_size (%ud) > registers_size (%ud)",
-                      code_item->ins_size_, code_item->registers_size_);
+                      accessor.InsSize(), accessor.RegistersSize());
     return false;
   }
 
-  if (UNLIKELY((code_item->outs_size_ > 5) &&
-               (code_item->outs_size_ > code_item->registers_size_))) {
+  if (UNLIKELY(accessor.OutsSize() > 5 && accessor.OutsSize() > accessor.RegistersSize())) {
     /*
      * outs_size can be up to 5, even if registers_size is smaller, since the
      * short forms of method invocation allow repetitions of a register multiple
@@ -1239,18 +1241,18 @@
      * need to be represented in-order in the register file.
      */
     ErrorStringPrintf("outs_size (%ud) > registers_size (%ud)",
-                      code_item->outs_size_, code_item->registers_size_);
+                      accessor.OutsSize(), accessor.RegistersSize());
     return false;
   }
 
-  const uint16_t* insns = code_item->insns_;
-  uint32_t insns_size = code_item->insns_size_in_code_units_;
+  const uint16_t* insns = accessor.Insns();
+  uint32_t insns_size = accessor.InsnsSizeInCodeUnits();
   if (!CheckListSize(insns, insns_size, sizeof(uint16_t), "insns size")) {
     return false;
   }
 
   // Grab the end of the insns if there are no try_items.
-  uint32_t try_items_size = code_item->tries_size_;
+  uint32_t try_items_size = accessor.TriesSize();
   if (try_items_size == 0) {
     ptr_ = reinterpret_cast<const uint8_t*>(&insns[insns_size]);
     return true;
@@ -1262,12 +1264,12 @@
     return false;
   }
 
-  const DexFile::TryItem* try_items = DexFile::GetTryItems(*code_item, 0);
+  const DexFile::TryItem* try_items = accessor.TryItems().begin();
   if (!CheckListSize(try_items, try_items_size, sizeof(DexFile::TryItem), "try_items size")) {
     return false;
   }
 
-  ptr_ = DexFile::GetCatchHandlerData(*code_item, 0);
+  ptr_ = accessor.GetCatchHandlerData();
   DECODE_UNSIGNED_CHECKED_FROM(ptr_, handlers_size);
 
   if (UNLIKELY((handlers_size == 0) || (handlers_size >= 65536))) {