summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mathieu Chartier <mathieuc@google.com> 2019-10-23 09:53:39 -0700
committer Mathieu Chartier <mathieuc@google.com> 2019-10-24 08:04:31 -0700
commitd3c72db3bb210939ca9ff814577e00111baf4018 (patch)
tree215208b5d0d2f544f18c4cfacd8707129a9f1b37
parent0ac7e561e92d9335a5174542abca8ca36f514d11 (diff)
Avoid preloading classes for boot image profiling
Since the clinits may execute methods, we should avoid preloading classes to avoid executing methods that may not be required. These samples could cause inaccuracy in the boot image profile. Test: manual: adb logcat | grep preloadClasses Bug: 139883463 Change-Id: I5b4568a477724606105196cba010109f80eecec1
-rw-r--r--core/java/com/android/internal/os/ZygoteInit.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 72d24645a2e7..ad4c6dd7a92b 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -248,6 +248,18 @@ public class ZygoteInit {
InputStream is;
try {
+ // If we are profiling the boot image, avoid preloading classes.
+ // Can't use device_config since we are the zygote.
+ String prop = SystemProperties.get(
+ "persist.device_config.runtime_native_boot.profilebootclasspath", "");
+ // Might be empty if the property is unset since the default is "".
+ if (prop.length() == 0) {
+ prop = SystemProperties.get("dalvik.vm.profilebootclasspath", "");
+ }
+ if ("true".equals(prop)) {
+ return;
+ }
+
is = new FileInputStream(PRELOADED_CLASSES);
} catch (FileNotFoundException e) {
Log.e(TAG, "Couldn't find " + PRELOADED_CLASSES + ".");