summaryrefslogtreecommitdiffstats
path: root/cmds
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2015-07-16 15:55:41 -0700
committerAndreas Gampe <agampe@google.com>2015-07-16 15:55:41 -0700
commitc968c0175e967e39e72f557b5e014b9575ba4727 (patch)
treee6ba021c0dfedd975c014baa57cb5ef4f913518a /cmds
parentfd54957888a2fd692e1a8590d7e9e98e4da9ca4d (diff)
downloadframeworks_native-c968c0175e967e39e72f557b5e014b9575ba4727.zip
frameworks_native-c968c0175e967e39e72f557b5e014b9575ba4727.tar.gz
frameworks_native-c968c0175e967e39e72f557b5e014b9575ba4727.tar.bz2
Installd: Add a swap override flag
Add dalvik.vm.dex2oat-swap system property to override a default decision. Bug: 20658562 Change-Id: I34368c6e435d1a9ceec20a0bf1c8c6213e527f5e
Diffstat (limited to 'cmds')
-rw-r--r--cmds/installd/commands.cpp43
1 files changed, 36 insertions, 7 deletions
diff --git a/cmds/installd/commands.cpp b/cmds/installd/commands.cpp
index 0c3ae02..880877c 100644
--- a/cmds/installd/commands.cpp
+++ b/cmds/installd/commands.cpp
@@ -984,20 +984,49 @@ static int wait_child(pid_t pid)
}
/*
- * Whether dexopt should use a swap file when compiling an APK. If kAlwaysProvideSwapFile, do this
- * on all devices (dex2oat will make a more informed decision itself, anyways). Otherwise, only do
- * this on a low-mem device.
+ * Whether dexopt should use a swap file when compiling an APK.
+ *
+ * If kAlwaysProvideSwapFile, do this on all devices (dex2oat will make a more informed decision
+ * itself, anyways).
+ *
+ * Otherwise, read "dalvik.vm.dex2oat-swap". If the property exists, return whether it is "true".
+ *
+ * Otherwise, return true if this is a low-mem device.
+ *
+ * Otherwise, return default value.
*/
-static bool kAlwaysProvideSwapFile = true;
+static bool kAlwaysProvideSwapFile = false;
+static bool kDefaultProvideSwapFile = true;
static bool ShouldUseSwapFileForDexopt() {
if (kAlwaysProvideSwapFile) {
return true;
}
- char low_mem_buf[PROPERTY_VALUE_MAX];
- property_get("ro.config.low_ram", low_mem_buf, "");
- return (strcmp(low_mem_buf, "true") == 0);
+ // Check the "override" property. If it exists, return value == "true".
+ char dex2oat_prop_buf[PROPERTY_VALUE_MAX];
+ if (property_get("dalvik.vm.dex2oat-swap", dex2oat_prop_buf, "") > 0) {
+ if (strcmp(dex2oat_prop_buf, "true") == 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ // Shortcut for default value. This is an implementation optimization for the process sketched
+ // above. If the default value is true, we can avoid to check whether this is a low-mem device,
+ // as low-mem is never returning false. The compiler will optimize this away if it can.
+ if (kDefaultProvideSwapFile) {
+ return true;
+ }
+
+ bool is_low_mem = check_boolean_property("ro.config.low_ram");
+ if (is_low_mem) {
+ return true;
+ }
+
+ // Default value must be false here.
+ return kDefaultProvideSwapFile;
}
/*