summaryrefslogtreecommitdiffstats
path: root/cmds
diff options
context:
space:
mode:
authorctso <ctsoyars@gmail.com>2010-06-24 02:03:47 +0000
committerRicardo Cerqueira <cyanogenmod@cerqueira.org>2012-11-21 00:25:19 +0000
commit3849b2b3f63c4aa04926d3c1bb161940c7d53415 (patch)
treefec52316494b6e1006a7ce965d3642da03ee2fb8 /cmds
parent0b636d08439c291322339e02be605be54f589b91 (diff)
downloadframeworks_base-3849b2b3f63c4aa04926d3c1bb161940c7d53415.zip
frameworks_base-3849b2b3f63c4aa04926d3c1bb161940c7d53415.tar.gz
frameworks_base-3849b2b3f63c4aa04926d3c1bb161940c7d53415.tar.bz2
DexOpt anything on /system in /cache/dalvik-cache
Change-Id: Id41d37047f2fcb90d513ac091dfcb85492473689 Allow property to disable dexopt on /cache Change-Id: Ic74707c4bead387bbf82e4c6d5037efc2d2ebeaf
Diffstat (limited to 'cmds')
-rw-r--r--cmds/installd/commands.c15
-rw-r--r--cmds/installd/installd.h1
2 files changed, 13 insertions, 3 deletions
diff --git a/cmds/installd/commands.c b/cmds/installd/commands.c
index 387f33d..a44d626 100644
--- a/cmds/installd/commands.c
+++ b/cmds/installd/commands.c
@@ -600,6 +600,7 @@ int create_cache_path(char path[PKG_PATH_MAX], const char *src)
char *tmp;
int srclen;
int dstlen;
+ char dexopt_data_only[PROPERTY_VALUE_MAX];
srclen = strlen(src);
@@ -612,7 +613,15 @@ int create_cache_path(char path[PKG_PATH_MAX], const char *src)
return -1;
}
- dstlen = srclen + strlen(DALVIK_CACHE_PREFIX) +
+ const char *cache_path = DALVIK_CACHE_PREFIX;
+ if (!strncmp(src, "/system", 7)) {
+ property_get("dalvik.vm.dexopt-data-only", dexopt_data_only, "");
+ if (strcmp(dexopt_data_only, "1") != 0) {
+ cache_path = DALVIK_SYSTEM_CACHE_PREFIX;
+ }
+ }
+
+ dstlen = srclen + strlen(cache_path) +
strlen(DALVIK_CACHE_POSTFIX) + 1;
if (dstlen > PKG_PATH_MAX) {
@@ -620,11 +629,11 @@ int create_cache_path(char path[PKG_PATH_MAX], const char *src)
}
sprintf(path,"%s%s%s",
- DALVIK_CACHE_PREFIX,
+ cache_path,
src + 1, /* skip the leading / */
DALVIK_CACHE_POSTFIX);
- for(tmp = path + strlen(DALVIK_CACHE_PREFIX); *tmp; tmp++) {
+ for(tmp = path + strlen(cache_path); *tmp; tmp++) {
if (*tmp == '/') {
*tmp = '@';
}
diff --git a/cmds/installd/installd.h b/cmds/installd/installd.h
index 0500c23..c352b60 100644
--- a/cmds/installd/installd.h
+++ b/cmds/installd/installd.h
@@ -72,6 +72,7 @@
#define DALVIK_CACHE_PREFIX "/data/dalvik-cache/"
#define DALVIK_CACHE_POSTFIX "/classes.dex"
+#define DALVIK_SYSTEM_CACHE_PREFIX "/cache/dalvik-cache/"
#define UPDATE_COMMANDS_DIR_PREFIX "/system/etc/updatecmds/"