Run dex2oat for test-art-host-oat targets with core.art

Revert "test-art-host-oat targets should not rerun dex2oat"

This reverts commit 14a8e7342c218208f124a5bf0079365dcb456d27.

Change-Id: Iad5d90e8968ad0dcfbe6d5c9d67c47c9c0ceb112
diff --git a/build/Android.oattest.mk b/build/Android.oattest.mk
index 3166b75..ea5502a 100644
--- a/build/Android.oattest.mk
+++ b/build/Android.oattest.mk
@@ -67,6 +67,7 @@
 .PHONY: test-art-host-oat-$(1)
 test-art-host-oat-$(1): $(ART_TEST_OUT)/oat-test-dex-$(1).jar $(HOST_CORE_IMG_OUT)
 	mkdir -p /tmp/android-data/test-art-host-oat-$(1)
+	$(DEX2OAT) --runtime-arg -Xms16m --runtime-arg -Xmx16m --boot-image=$(HOST_CORE_IMG_OUT) --dex-file=$(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar --oat-file=$(HOST_OUT_JAVA_LIBRARIES)/oat-test-dex-$(1).jar.oat --instruction-set=X86 --host-prefix=""
 	ANDROID_DATA=/tmp/android-data/test-art-host-oat-$(1) \
 	  ANDROID_ROOT=$(HOST_OUT) \
 	  LD_LIBRARY_PATH=$(HOST_OUT_SHARED_LIBRARIES) \
diff --git a/src/dex2oat.cc b/src/dex2oat.cc
index 747b613..6017ddb 100644
--- a/src/dex2oat.cc
+++ b/src/dex2oat.cc
@@ -200,7 +200,7 @@
   }
 
   const Compiler* CreateOatFile(const std::string& boot_image_option,
-                                const std::string& host_prefix,
+                                const std::string* host_prefix,
                                 const std::vector<const DexFile*>& dex_files,
                                 File* oat_file,
 #if defined(ART_USE_LLVM_COMPILER)
@@ -248,8 +248,8 @@
       ImageSpace* image_space = heap->GetImageSpace();
       image_file_location_checksum = image_space->GetImageHeader().GetOatChecksum();
       image_file_location = image_space->GetImageFilename();
-      if (!host_prefix.empty() && StartsWith(image_file_location, host_prefix.c_str())) {
-        image_file_location = image_file_location.substr(host_prefix.size());
+      if (host_prefix != NULL && StartsWith(image_file_location, host_prefix->c_str())) {
+        image_file_location = image_file_location.substr(host_prefix->size());
       }
     }
 
@@ -470,7 +470,7 @@
   std::string image_filename;
   std::string boot_image_filename;
   uintptr_t image_base = 0;
-  std::string host_prefix;
+  UniquePtr<std::string> host_prefix;
   std::vector<const char*> runtime_args;
   int thread_count = 2;
   bool support_debugging = false;
@@ -529,7 +529,7 @@
     } else if (option.starts_with("--boot-image=")) {
       boot_image_filename = option.substr(strlen("--boot-image=")).data();
     } else if (option.starts_with("--host-prefix=")) {
-      host_prefix = option.substr(strlen("--host-prefix=")).data();
+      host_prefix.reset(new std::string(option.substr(strlen("--host-prefix=")).data()));
     } else if (option.starts_with("--instruction-set=")) {
       StringPiece instruction_set_str = option.substr(strlen("--instruction-set=")).data();
       if (instruction_set_str == "Thumb2" || instruction_set_str == "ARM") {
@@ -574,19 +574,19 @@
     Usage("--oat-fd should not be used with --image");
   }
 
-  if (host_prefix.empty()) {
+  if (host_prefix.get() == NULL) {
     const char* android_product_out = getenv("ANDROID_PRODUCT_OUT");
     if (android_product_out != NULL) {
-        host_prefix = android_product_out;
+        host_prefix.reset(new std::string(android_product_out));
     }
   }
 
   bool image = (!image_filename.empty());
   if (!image && boot_image_filename.empty()) {
-    if (host_prefix.empty()) {
+    if (host_prefix.get() == NULL) {
       boot_image_filename += GetAndroidRoot();
     } else {
-      boot_image_filename += host_prefix;
+      boot_image_filename += *host_prefix.get();
       boot_image_filename += "/system";
     }
     boot_image_filename += "/framework/boot.art";
@@ -661,8 +661,8 @@
   } else {
     options.push_back(std::make_pair(boot_image_option.c_str(), reinterpret_cast<void*>(NULL)));
   }
-  if (!host_prefix.empty()) {
-    options.push_back(std::make_pair("host-prefix", host_prefix.c_str()));
+  if (host_prefix.get() != NULL) {
+    options.push_back(std::make_pair("host-prefix", host_prefix->c_str()));
   }
   for (size_t i = 0; i < runtime_args.size(); i++) {
     options.push_back(std::make_pair(runtime_args[i], reinterpret_cast<void*>(NULL)));
@@ -703,7 +703,7 @@
   }
 
   UniquePtr<const Compiler> compiler(dex2oat->CreateOatFile(boot_image_option,
-                                                            host_prefix,
+                                                            host_prefix.get(),
                                                             dex_files,
                                                             oat_file.get(),
 #if defined(ART_USE_LLVM_COMPILER)