From 8eb891be6f53118cb4b116fe29d131de166957c1 Mon Sep 17 00:00:00 2001 From: Calin Juravle Date: Thu, 3 May 2018 19:51:18 -0700 Subject: [PATCH] Make system server profiling an explicit runtime intent Pass an explicit flag to the runtime when we need to profile the system server. This ensures that we only start the ProfileSaver and allocate the code cache when needed. Test: manual, on a device with system server profiling enabled Bug: 74081010 Change-Id: I5647e0bfb47d31c0e39bb3f59650cc956f49c4db --- core/java/com/android/internal/os/Zygote.java | 4 ++++ core/java/com/android/internal/os/ZygoteInit.java | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/core/java/com/android/internal/os/Zygote.java b/core/java/com/android/internal/os/Zygote.java index 0d1088896f407..e1878623711d3 100644 --- a/core/java/com/android/internal/os/Zygote.java +++ b/core/java/com/android/internal/os/Zygote.java @@ -70,6 +70,10 @@ public final class Zygote { */ public static final int API_ENFORCEMENT_POLICY_SHIFT = Integer.numberOfTrailingZeros(API_ENFORCEMENT_POLICY_MASK); + /** + * Enable system server ART profiling. + */ + public static final int PROFILE_SYSTEM_SERVER = 1 << 14; /** No external storage should be mounted. */ public static final int MOUNT_EXTERNAL_NONE = 0; diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index c8e71021956cf..1df2dca4ac6ba 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -671,6 +671,12 @@ public class ZygoteInit { ZygoteConnection.applyDebuggerSystemProperty(parsedArgs); ZygoteConnection.applyInvokeWithSystemProperty(parsedArgs); + boolean profileSystemServer = SystemProperties.getBoolean( + "dalvik.vm.profilesystemserver", false); + if (profileSystemServer) { + parsedArgs.runtimeFlags |= Zygote.PROFILE_SYSTEM_SERVER; + } + /* Request to fork the system server process */ pid = Zygote.forkSystemServer( parsedArgs.uid, parsedArgs.gid,