Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ac03a05 authored by Nicolas Geoffray's avatar Nicolas Geoffray
Browse files

Use new image location for JIT Zygote.

Bug:119800099
Test: boots, correct image is being picked up, correct files are being
pinned

Change-Id: I7add3006b0d72b005daabb6609d954b466985304
parent 6521c744
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -209,9 +209,11 @@ static const char* kNoGenerationalCCRuntimeOption = "-Xgc:nogenerational_cc";
static const char* PROFILE_BOOT_CLASS_PATH = "profilebootclasspath";

// Feature flag name for running the JIT in Zygote experiment, b/119800099.
static const char* ENABLE_APEX_IMAGE = "enable_apex_image";
// Flag to pass to the runtime when using the apex image.
static const char* kApexImageOption = "-Ximage:/system/framework/apex.art";
// TODO: Rename the server-level flag or remove.
static const char* ENABLE_JITZYGOTE_IMAGE = "enable_apex_image";
// Flag to pass to the runtime when using the JIT Zygote image.
static const char* kJitZygoteImageOption =
        "-Ximage:boot.art:/nonx/boot-framework.art!/system/etc/boot-image.prof";

// Feature flag name for disabling lock profiling.
static const char* DISABLE_LOCK_PROFILING = "disable_lock_profiling";
@@ -687,16 +689,16 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote, bool p
        addOption("-Xjitsaveprofilinginfo");
    }

    std::string use_apex_image_flag =
    std::string use_jitzygote_image_flag =
            server_configurable_flags::GetServerConfigurableFlag(RUNTIME_NATIVE_BOOT_NAMESPACE,
                                                             ENABLE_APEX_IMAGE,
                                                                 ENABLE_JITZYGOTE_IMAGE,
                                                                 /*default_value=*/"");
    // Use the APEX boot image for boot class path profiling to get JIT samples on BCP methods.
    // Also use the APEX boot image if it's explicitly enabled via configuration flag.
    const bool use_apex_image = profile_boot_class_path || (use_apex_image_flag == "true");
    const bool use_apex_image = profile_boot_class_path || (use_jitzygote_image_flag == "true");
    if (use_apex_image) {
        addOption(kApexImageOption);
        ALOGI("Using Apex boot image: '%s'\n", kApexImageOption);
        ALOGI("Using JIT Zygote image: '%s'\n", kJitZygoteImageOption);
        addOption(kJitZygoteImageOption);
    } else if (parseRuntimeOption("dalvik.vm.boot-image", bootImageBuf, "-Ximage:")) {
        ALOGI("Using dalvik.vm.boot-image: '%s'\n", bootImageBuf);
    } else {
+2 −2
Original line number Diff line number Diff line
@@ -3402,8 +3402,8 @@
    <!-- True if assistant app should be pinned via Pinner Service -->
    <bool name="config_pinnerAssistantApp">false</bool>

    <!-- List of files pinned by the Pinner Service with the apex boot image b/119800099 -->
    <string-array translatable="false" name="config_apexBootImagePinnerServiceFiles">
    <!-- List of files pinned by the Pinner Service with the JIT Zygote boot image b/119800099 -->
    <string-array translatable="false" name="config_jitzygoteBootImagePinnerServiceFiles">
    </string-array>

    <!-- Number of days preloaded file cache should be preserved on a device before it can be
+1 −1
Original line number Diff line number Diff line
@@ -3037,7 +3037,7 @@
  <java-symbol type="bool" name="config_pinnerCameraApp" />
  <java-symbol type="bool" name="config_pinnerHomeApp" />
  <java-symbol type="bool" name="config_pinnerAssistantApp" />
  <java-symbol type="array" name="config_apexBootImagePinnerServiceFiles" />
  <java-symbol type="array" name="config_jitzygoteBootImagePinnerServiceFiles" />

  <java-symbol type="string" name="config_doubleTouchGestureEnableFile" />

+4 −3
Original line number Diff line number Diff line
@@ -272,10 +272,11 @@ public final class PinnerService extends SystemService {
    private void handlePinOnStart() {
        final String bootImage = SystemProperties.get("dalvik.vm.boot-image", "");
        String[] filesToPin = null;
        if (bootImage.endsWith("apex.art")) {
            // Use the files listed for that specific boot image
        if (bootImage.endsWith("boot-image.prof")) {
            // Use the files listed for that specific boot image.
            // TODO: find a better way to know we're using the JIT zygote configuration.
            filesToPin = mContext.getResources().getStringArray(
                  com.android.internal.R.array.config_apexBootImagePinnerServiceFiles);
                  com.android.internal.R.array.config_jitzygoteBootImagePinnerServiceFiles);
        } else {
            // Files to pin come from the overlay and can be specified per-device config
            filesToPin = mContext.getResources().getStringArray(