Revert "Verify profile wrt dex file in dex2oat"

Bug: 62602192
Bug: 65260586

Fails on device.

This reverts commit 26765207bd51665f2413f37658b77c66391c6106.

Change-Id: I6cd54ff445828c39663156a8420224fd9a042c47
diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc
index d4934e5..d8caf42 100644
--- a/dex2oat/dex2oat.cc
+++ b/dex2oat/dex2oat.cc
@@ -712,10 +712,6 @@
     }
   }
 
-  bool VerifyProfileData() {
-    return profile_compilation_info_->VerifyProfileData(dex_files_);
-  }
-
   void ParseInstructionSetVariant(const StringPiece& option, ParserOptions* parser_options) {
     DCHECK(option.starts_with("--instruction-set-variant="));
     StringPiece str = option.substr(strlen("--instruction-set-variant=")).data();
@@ -3105,19 +3101,6 @@
     return setup_code;
   }
 
-  // TODO: Due to the cyclic dependencies, profile loading and verifying are
-  // being done separately. Refactor and place the two next to each other.
-  // If verification fails, we don't abort the compilation and instead log an
-  // error.
-  // TODO(b/62602192, b/65260586): We should consider aborting compilation when
-  // the profile verification fails.
-  // Note: If dex2oat fails, installd will remove the oat files causing the app
-  // to fallback to apk with possible in-memory extraction. We want to avoid
-  // that, and thus we're lenient towards profile corruptions.
-  if (dex2oat->UseProfile()) {
-    dex2oat->VerifyProfileData();
-  }
-
   // Helps debugging on device. Can be used to determine which dalvikvm instance invoked a dex2oat
   // instance. Used by tools/bisection_search/bisection_search.py.
   VLOG(compiler) << "Running dex2oat (parent PID = " << getppid() << ")";
diff --git a/runtime/jit/profile_compilation_info.cc b/runtime/jit/profile_compilation_info.cc
index 9ce91b8..57fc4976 100644
--- a/runtime/jit/profile_compilation_info.cc
+++ b/runtime/jit/profile_compilation_info.cc
@@ -1048,89 +1048,6 @@
   }
 }
 
-bool ProfileCompilationInfo::VerifyProfileData(const std::vector<const DexFile*>& dex_files) {
-  std::unordered_map<std::string, const DexFile*> key_to_dex_file;
-  for (const DexFile* dex_file : dex_files) {
-    key_to_dex_file.emplace(GetProfileDexFileKey(dex_file->GetLocation()), dex_file);
-  }
-  for (const DexFileData* dex_data : info_) {
-    const auto it = key_to_dex_file.find(dex_data->profile_key);
-    if (it == key_to_dex_file.end()) {
-      // It is okay if profile contains data for additional dex files.
-      continue;
-    }
-    const DexFile* dex_file = it->second;
-    const std::string& dex_location = dex_file->GetLocation();
-    if (!ChecksumMatch(dex_data->checksum, dex_file->GetLocationChecksum())) {
-      LOG(ERROR) << "Dex checksum mismatch while verifying profile "
-                 << "dex location " << dex_location << " (checksum="
-                 << dex_file->GetLocationChecksum() << ", profile checksum="
-                 << dex_data->checksum;
-      return false;
-    }
-    // Verify method_encoding.
-    for (const auto& method_it : dex_data->method_map) {
-      size_t method_id = (size_t)(method_it.first);
-      if (method_id >= dex_file->NumMethodIds()) {
-        LOG(ERROR) << "Invalid method id in profile file. dex location="
-                   << dex_location << " method_id=" << method_id << " NumMethodIds="
-                   << dex_file->NumMethodIds();
-        return false;
-      }
-
-      // Verify class indices of inline caches.
-      const InlineCacheMap &inline_cache_map = method_it.second;
-      for (const auto& inline_cache_it : inline_cache_map) {
-        const DexPcData dex_pc_data = inline_cache_it.second;
-        if (dex_pc_data.is_missing_types || dex_pc_data.is_megamorphic) {
-          // No class indices to verify.
-          continue;
-        }
-
-        const ClassSet &classes = dex_pc_data.classes;
-        SafeMap<uint8_t, std::vector<dex::TypeIndex>> dex_to_classes_map;
-        // Group the classes by dex. We expect that most of the classes will come from
-        // the same dex, so this will be more efficient than encoding the dex index
-        // for each class reference.
-        GroupClassesByDex(classes, &dex_to_classes_map);
-        for (const auto &dex_it : dex_to_classes_map) {
-          uint8_t dex_profile_index = dex_it.first;
-          const auto dex_file_inline_cache_it = key_to_dex_file.find(
-              info_[dex_profile_index]->profile_key);
-          if (dex_file_inline_cache_it == key_to_dex_file.end()) {
-            // It is okay if profile contains data for additional dex files.
-            continue;
-          }
-          const DexFile *dex_file_for_inline_cache_check = dex_file_inline_cache_it->second;
-          const std::vector<dex::TypeIndex> &dex_classes = dex_it.second;
-          for (size_t i = 0; i < dex_classes.size(); i++) {
-            if (dex_classes[i].index_ >= dex_file_for_inline_cache_check->NumTypeIds()) {
-              LOG(ERROR) << "Invalid inline cache in profile file. dex location="
-                  << dex_location << " method_id=" << method_id
-                  << " dex_profile_index="
-                  << static_cast<uint16_t >(dex_profile_index) << " type_index="
-                  << dex_classes[i].index_
-                  << " NumTypeIds="
-                  << dex_file_for_inline_cache_check->NumTypeIds();
-              return false;
-            }
-          }
-        }
-      }
-    }
-    // Verify class_ids.
-    for (const auto& class_id : dex_data->class_set) {
-      if (class_id.index_ >= dex_file->NumTypeIds()) {
-        LOG(ERROR) << "Invalid class id in profile file. dex_file location "
-                   << dex_location << " class_id=" << class_id.index_ << " NumClassIds="
-                   << dex_file->NumClassDefs();
-        return false;
-      }
-    }
-  }
-  return true;
-}
-
 // TODO(calin): fail fast if the dex checksums don't match.
 ProfileCompilationInfo::ProfileLoadSatus ProfileCompilationInfo::LoadInternal(
       int fd, std::string* error, bool merge_classes) {
diff --git a/runtime/jit/profile_compilation_info.h b/runtime/jit/profile_compilation_info.h
index 477bbe6..5c7448f 100644
--- a/runtime/jit/profile_compilation_info.h
+++ b/runtime/jit/profile_compilation_info.h
@@ -303,15 +303,6 @@
   // If merge_classes is set to false, classes will not be merged/loaded.
   bool Load(int fd, bool merge_classes = true);
 
-  // Verify integrity of the profile file with the provided dex files.
-  // If there exists a DexData object which maps to a dex_file, then it verifies that:
-  // - The checksums of the DexData and dex_file are equals.
-  // - No method id exceeds NumMethodIds corresponding to the dex_file.
-  // - No class id exceeds NumTypeIds corresponding to the dex_file.
-  // - For every inline_caches, class_ids does not exceed NumTypeIds corresponding to
-  //   the dex_file they are in.
-  bool VerifyProfileData(const std::vector<const DexFile *> &dex_files);
-
   // Load profile information from the given file
   // If the current profile is non-empty the load will fail.
   // If clear_if_invalid is true and the file is invalid the method clears the
diff --git a/test/707-checker-invalid-profile/check b/test/707-checker-invalid-profile/check
deleted file mode 100755
index a5d96f0..0000000
--- a/test/707-checker-invalid-profile/check
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# When profile verification fails, dex2oat logs an error. The following
-# command parses the error message was logged.
-grep -q -f $1 $2
diff --git a/test/707-checker-invalid-profile/expected.txt b/test/707-checker-invalid-profile/expected.txt
index 4d84c96..e69de29 100644
--- a/test/707-checker-invalid-profile/expected.txt
+++ b/test/707-checker-invalid-profile/expected.txt
@@ -1 +0,0 @@
-Invalid inline cache in profile file.