From 5f50c87946fad39127b2a89ddb60f731101f9898 Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Fri, 30 Jun 2017 11:47:38 -0700 Subject: [PATCH] Add boot profile support If the boot profile file exists, its passed to the runtime as an image compiler option. Also pass speed-profile for this case. Bug: 37966211 Test: make, flash, and look at logcat during boot (cherry picked from commit f99e70e93408bd6dfda595866f13ba0068d4798e) Change-Id: Ia09ff0200186382e45151b7cabb53016f8e0aa3f --- core/jni/AndroidRuntime.cpp | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 81504c047adaf..facc0f998bdaa 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -799,19 +799,27 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) "--compiler-filter=", "-Ximage-compiler-option"); } - // Make sure there is a preloaded-classes file. - if (!hasFile("/system/etc/preloaded-classes")) { - ALOGE("Missing preloaded-classes file, /system/etc/preloaded-classes not found: %s\n", - strerror(errno)); - return -1; - } - addOption("-Ximage-compiler-option"); - addOption("--image-classes=/system/etc/preloaded-classes"); - - // If there is a compiled-classes file, push it. - if (hasFile("/system/etc/compiled-classes")) { + // If there is a boot profile, it takes precedence over the image and preloaded classes. + if (hasFile("/system/etc/boot-image.prof")) { addOption("-Ximage-compiler-option"); - addOption("--compiled-classes=/system/etc/compiled-classes"); + addOption("--profile-file=/system/etc/boot-image.prof"); + addOption("-Ximage-compiler-option"); + addOption("--compiler-filter=speed-profile"); + } else { + // Make sure there is a preloaded-classes file. + if (!hasFile("/system/etc/preloaded-classes")) { + ALOGE("Missing preloaded-classes file, /system/etc/preloaded-classes not found: %s\n", + strerror(errno)); + return -1; + } + addOption("-Ximage-compiler-option"); + addOption("--image-classes=/system/etc/preloaded-classes"); + + // If there is a compiled-classes file, push it. + if (hasFile("/system/etc/compiled-classes")) { + addOption("-Ximage-compiler-option"); + addOption("--compiled-classes=/system/etc/compiled-classes"); + } } property_get("dalvik.vm.image-dex2oat-flags", dex2oatImageFlagsBuf, "");