Fix name-based detection of JIT-zygote boot image extension.

ART detects JIT-zygote boot image by the image name. This has been
broken since boot image extension has been enabled for JIT-zygote
config in CL I5493e575ebf90bad1d5ad2850004d54590bbc079.

This CL replaces 'kApexBootImage' with 'kApexBootImageExtension',
since the JIT-zygote image is always used with extension.

Test: compare boot-framework.art and apex-framework.art,
  they were identical before this CL, and differ after this CL.

Test: JIT-zygote config boots, steps 1-2:

  1. Temporarily enable Jit zygote in the product device config (in
    this case device/google/muskie/aosp_walleye.mk):

    +# System server should not contain compiled code.
    +PRODUCT_SYSTEM_SERVER_COMPILER_FILTER := verify
    +
    +# Use the apex image for preopting.
    +DEXPREOPT_USE_APEX_IMAGE := true
    +
    +# Have the runtime pick up the apex image.
    +PRODUCT_PROPERTY_OVERRIDES += \
    +    dalvik.vm.boot-image=/apex/com.android.art/javalib/apex.art:/system/framework/apex-framework.art

  2. Build and flash:
    $ lunch aosp_walleye-userdebug && m \
    && adb reboot bootloader && fastboot flashall -w

Change-Id: Ifd3d3c13107c2e4514eed7c4e2b1bbc5a5a12245
diff --git a/compiler/driver/compiler_options.h b/compiler/driver/compiler_options.h
index e24da59..a43390a 100644
--- a/compiler/driver/compiler_options.h
+++ b/compiler/driver/compiler_options.h
@@ -70,11 +70,11 @@
   static constexpr size_t kUnsetInlineMaxCodeUnits = -1;
 
   enum class ImageType : uint8_t {
-    kNone,                // JIT or AOT app compilation producing only an oat file but no image.
-    kBootImage,           // Creating boot image.
-    kBootImageExtension,  // Creating boot image extension.
-    kAppImage,            // Creating app image.
-    kApexBootImage,       // Creating the apex image for jit/zygote experiment b/119800099.
+    kNone,                    // JIT or AOT app compilation producing only an oat file but no image.
+    kBootImage,               // Creating boot image.
+    kBootImageExtension,      // Creating boot image extension.
+    kAppImage,                // Creating app image.
+    kApexBootImageExtension,  // Creating JIT-zygote boot image extension (b/119800099).
   };
 
   CompilerOptions();
@@ -194,16 +194,17 @@
 
   // Are we compiling a boot image?
   bool IsBootImage() const {
-    return image_type_ == ImageType::kBootImage || image_type_ == ImageType::kApexBootImage;
+    return image_type_ == ImageType::kBootImage;
   }
 
-  bool IsApexBootImage() const {
-    return image_type_ == ImageType::kApexBootImage;
+  bool IsApexBootImageExtension() const {
+    return image_type_ == ImageType::kApexBootImageExtension;
   }
 
   // Are we compiling a boot image extension?
   bool IsBootImageExtension() const {
-    return image_type_ == ImageType::kBootImageExtension;
+    return image_type_ == ImageType::kBootImageExtension
+      || image_type_ == ImageType::kApexBootImageExtension;
   }
 
   bool IsBaseline() const {
diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc
index d582cec..d983d94 100644
--- a/dex2oat/dex2oat.cc
+++ b/dex2oat/dex2oat.cc
@@ -828,13 +828,14 @@
 
     DCHECK(compiler_options_->image_type_ == CompilerOptions::ImageType::kNone);
     if (!image_filenames_.empty() || image_fd_ != -1) {
-      if (!boot_image_filename_.empty()) {
-        compiler_options_->image_type_ = CompilerOptions::ImageType::kBootImageExtension;
-      } else if (android::base::EndsWith(image_filenames_[0], "apex.art")) {
-        compiler_options_->image_type_ = CompilerOptions::ImageType::kApexBootImage;
-      } else {
-        compiler_options_->image_type_ = CompilerOptions::ImageType::kBootImage;
-      }
+      // If no boot image is provided, then dex2oat is compiling the primary boot image,
+      // otherwise it is compiling the boot image extension. In the case of JIT-zygote
+      // extension the primary boot image has a special name "apex.art".
+      compiler_options_->image_type_ = boot_image_filename_.empty()
+          ? CompilerOptions::ImageType::kBootImage
+          : android::base::EndsWith(boot_image_filename_, "apex.art")
+              ? CompilerOptions::ImageType::kApexBootImageExtension
+              : CompilerOptions::ImageType::kBootImageExtension;
     }
     if (app_image_fd_ != -1 || !app_image_file_name_.empty()) {
       if (compiler_options_->IsBootImage() || compiler_options_->IsBootImageExtension()) {
diff --git a/dex2oat/driver/compiler_driver.cc b/dex2oat/driver/compiler_driver.cc
index ae73f49..94391eb 100644
--- a/dex2oat/driver/compiler_driver.cc
+++ b/dex2oat/driver/compiler_driver.cc
@@ -936,7 +936,7 @@
   // If compiling the apex image, filter out methods not in an apex file (the profile used
   // for boot classpath is the same between the apex image and the boot image, so it includes
   /// framewkro methods).
-  if (compiler_options_->IsApexBootImage() &&
+  if (compiler_options_->IsApexBootImageExtension() &&
       !android::base::StartsWith(method_ref.dex_file->GetLocation(), "/apex")) {
     return false;
   }