OSDN Git Service

Add use_app_image_startup_cache feature flag
authorMathieu Chartier <mathieuc@google.com>
Mon, 4 Feb 2019 21:28:36 +0000 (13:28 -0800)
committerMathieu Chartier <mathieuc@google.com>
Wed, 6 Feb 2019 20:30:36 +0000 (12:30 -0800)
Passed down to the zygote if the corresponding system property is set:
runtime_native / use_app_image_startup_cache.

Bug: 123524494
Bug: 116059983
Test: adb shell device_config put runtime_native use_app_image_startup_cache true

(cherry picked from commit ced7e08129902f007afa7a87bdcf5a122fd67658)

Merged-In: I27c0b9ea9533b2b6ad1ccd45f0fb9292c4cfca02
Change-Id: I27c0b9ea9533b2b6ad1ccd45f0fb9292c4cfca02

core/java/com/android/internal/os/Zygote.java
core/java/com/android/internal/os/ZygoteInit.java

index 1048cb4..56eb128 100644 (file)
@@ -93,6 +93,11 @@ public final class Zygote {
      */
     public static final int PROFILE_SYSTEM_SERVER = 1 << 14;
 
+    /*
+     * Enable using the ART app image startup cache
+     */
+    public static final int USE_APP_IMAGE_STARTUP_CACHE = 1 << 16;
+
     /** No external storage should be mounted. */
     public static final int MOUNT_EXTERNAL_NONE = IVold.REMOUNT_MODE_NONE;
     /** Default external storage should be mounted. */
index 9f23797..e132abd 100644 (file)
@@ -41,6 +41,7 @@ import android.system.OsConstants;
 import android.system.StructCapUserData;
 import android.system.StructCapUserHeader;
 import android.text.Hyphenator;
+import android.text.TextUtils;
 import android.util.EventLog;
 import android.util.Log;
 import android.util.Slog;
@@ -84,6 +85,8 @@ public class ZygoteInit {
 
     private static final String PROPERTY_DISABLE_OPENGL_PRELOADING = "ro.zygote.disable_gl_preload";
     private static final String PROPERTY_GFX_DRIVER = "ro.gfx.driver.0";
+    private static final String PROPERTY_USE_APP_IMAGE_STARTUP_CACHE =
+            "persist.device_config.runtime_native.use_app_image_startup_cache";
 
     private static final int LOG_BOOT_PROGRESS_PRELOAD_START = 3020;
     private static final int LOG_BOOT_PROGRESS_PRELOAD_END = 3030;
@@ -705,6 +708,13 @@ public class ZygoteInit {
                 parsedArgs.mRuntimeFlags |= Zygote.PROFILE_SYSTEM_SERVER;
             }
 
+            String use_app_image_cache = SystemProperties.get(
+                    PROPERTY_USE_APP_IMAGE_STARTUP_CACHE, "");
+            // Property defaults to true currently.
+            if (!TextUtils.isEmpty(use_app_image_cache) && !use_app_image_cache.equals("false")) {
+                parsedArgs.mRuntimeFlags |= Zygote.USE_APP_IMAGE_STARTUP_CACHE;
+            }
+
             /* Request to fork the system server process */
             pid = Zygote.forkSystemServer(
                     parsedArgs.mUid, parsedArgs.mGid,