Fixed and refactored profiler options handling - extracted profiler options in a separate class - switched from system property reading to command line arguments - added profile based compilation options to CompilerOptions - removed no longer used kProfile compilation filter - optimize dex files only if the profiler is enabled - clean up unused arguments Bug: 12877748 Bug: 15275634 Change-Id: I37ff68e7694370950ce8db2360562e9058ecebb7
diff --git a/runtime/native/dalvik_system_DexFile.cc b/runtime/native/dalvik_system_DexFile.cc index 585c88e..e3fbd5c 100644 --- a/runtime/native/dalvik_system_DexFile.cc +++ b/runtime/native/dalvik_system_DexFile.cc
@@ -328,7 +328,7 @@ // If the 'defer' argument is true then this will be retried later. In this case we // need to make sure that the profile file copy is not made so that we will get the // same result second time. - if (pkgname != nullptr) { + if (Runtime::Current()->GetProfilerOptions().IsEnabled() && (pkgname != nullptr)) { const std::string profile_file = GetDalvikCacheOrDie("profiles", false /* create_if_absent */) + std::string("/") + pkgname; const std::string profile_cache_dir = GetDalvikCacheOrDie("profile-cache", @@ -357,8 +357,8 @@ // There is a previous profile file. Check if the profile has changed significantly. // A change in profile is considered significant if X% (change_thr property) of the top K% // (compile_thr property) samples has changed. - double top_k_threshold = GetDoubleProperty("dalvik.vm.profiler.dex2oat.compile_thr", 10.0, 90.0, 90.0); - double change_threshold = GetDoubleProperty("dalvik.vm.profiler.dex2oat.change_thr", 1.0, 90.0, 10.0); + double top_k_threshold = Runtime::Current()->GetProfilerOptions().GetTopKThreshold(); + double change_threshold = Runtime::Current()->GetProfilerOptions().GetTopKChangeThreshold(); double change_percent = 0.0; ProfileFile new_profile, old_profile; bool new_ok = new_profile.LoadFile(profile_file);
diff --git a/runtime/native/dalvik_system_VMRuntime.cc b/runtime/native/dalvik_system_VMRuntime.cc index e5cc671..63d7c77 100644 --- a/runtime/native/dalvik_system_VMRuntime.cc +++ b/runtime/native/dalvik_system_VMRuntime.cc
@@ -510,15 +510,13 @@ * process name. We use this information to start up the sampling profiler for * for ART. */ -static void VMRuntime_registerAppInfo(JNIEnv* env, jclass, jstring pkgName, jstring appDir, jstring procName) { +static void VMRuntime_registerAppInfo(JNIEnv* env, jclass, jstring pkgName, + jstring appDir, jstring procName) { const char *pkgNameChars = env->GetStringUTFChars(pkgName, NULL); - const char *appDirChars = env->GetStringUTFChars(appDir, NULL); - const char *procNameChars = env->GetStringUTFChars(procName, NULL); - std::string profileFile = StringPrintf("/data/dalvik-cache/profiles/%s", pkgNameChars); - Runtime::Current()->StartProfiler(profileFile.c_str(), procNameChars); - env->ReleaseStringUTFChars(appDir, appDirChars); - env->ReleaseStringUTFChars(procName, procNameChars); + + Runtime::Current()->StartProfiler(profileFile.c_str()); + env->ReleaseStringUTFChars(pkgName, pkgNameChars); }