diff options
author | Brian Carlstrom <bdc@google.com> | 2014-03-05 19:23:48 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-03-05 19:23:48 +0000 |
commit | 5c126c3d1703d8bef9a55dcc01f1fabf17811f60 (patch) | |
tree | 9ba68b9b10d7bb91f2fedf63433264acd4000e0a | |
parent | 22f66b76f5e49704f3be76ad3fff7e4b5456864d (diff) | |
parent | 3beff1e023193b485c67a3003a7f363f105d96d4 (diff) | |
download | frameworks_base-5c126c3d1703d8bef9a55dcc01f1fabf17811f60.zip frameworks_base-5c126c3d1703d8bef9a55dcc01f1fabf17811f60.tar.gz frameworks_base-5c126c3d1703d8bef9a55dcc01f1fabf17811f60.tar.bz2 |
Merge "Add dex2oat-flags plumbing to AndroidRuntime"
-rw-r--r-- | core/jni/AndroidRuntime.cpp | 33 | ||||
-rw-r--r-- | include/android_runtime/AndroidRuntime.h | 2 |
2 files changed, 28 insertions, 7 deletions
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 2215dd7..96f0d6c 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -395,16 +395,16 @@ static void readLocale(char* language, char* region) * * This will cut up "extraOptsBuf" as we chop it into individual options. * + * If "quotingArg" is non-null, it is passed before each extra option in mOptions. + * * Adds the strings, if any, to mOptions. */ -void AndroidRuntime::parseExtraOpts(char* extraOptsBuf) +void AndroidRuntime::parseExtraOpts(char* extraOptsBuf, const char* quotingArg) { JavaVMOption opt; - char* start; - char* end; - memset(&opt, 0, sizeof(opt)); - start = extraOptsBuf; + char* start = extraOptsBuf; + char* end = NULL; while (*start != '\0') { while (*start == ' ') /* skip leading whitespace */ start++; @@ -418,6 +418,11 @@ void AndroidRuntime::parseExtraOpts(char* extraOptsBuf) *end++ = '\0'; /* mark end, advance to indicate more */ opt.optionString = start; + if (quotingArg != NULL) { + JavaVMOption quotingOpt; + quotingOpt.optionString = quotingArg; + mOptions.add(quotingOpt); + } mOptions.add(opt); start = end; } @@ -449,6 +454,9 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) char gctypeOptsBuf[sizeof("-Xgc:")-1 + PROPERTY_VALUE_MAX]; char heaptargetutilizationOptsBuf[sizeof("-XX:HeapTargetUtilization=")-1 + PROPERTY_VALUE_MAX]; char jitcodecachesizeOptsBuf[sizeof("-Xjitcodecachesize:")-1 + PROPERTY_VALUE_MAX]; + char dalvikVmLibBuf[PROPERTY_VALUE_MAX]; + char dex2oatFlagsBuf[PROPERTY_VALUE_MAX]; + char dex2oatImageFlagsBuf[PROPERTY_VALUE_MAX]; char extraOptsBuf[PROPERTY_VALUE_MAX]; char* stackTraceFile = NULL; bool checkJni = false; @@ -741,9 +749,22 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) mOptions.add(opt); } + // libart tolerates libdvm flags, but not vice versa, so only pass these if libart. + property_get("persist.sys.dalvik.vm.lib.1", dalvikVmLibBuf, "libdvm.so"); + if (strncmp(dalvikVmLibBuf, "libart", 6) == 0) { + + // Extra options for DexClassLoader. + property_get("dalvik.vm.dex2oat-flags", dex2oatFlagsBuf, ""); + parseExtraOpts(dex2oatFlagsBuf, "-Xcompiler-option"); + + // Extra options for boot.art/boot.oat image generation. + property_get("dalvik.vm.image-dex2oat-flags", dex2oatImageFlagsBuf, ""); + parseExtraOpts(dex2oatImageFlagsBuf, "-Ximage-compiler-option"); + } + /* extra options; parse this late so it overrides others */ property_get("dalvik.vm.extra-opts", extraOptsBuf, ""); - parseExtraOpts(extraOptsBuf); + parseExtraOpts(extraOptsBuf, NULL); /* Set the properties for locale */ { diff --git a/include/android_runtime/AndroidRuntime.h b/include/android_runtime/AndroidRuntime.h index 0b3ce9a..649f4c3 100644 --- a/include/android_runtime/AndroidRuntime.h +++ b/include/android_runtime/AndroidRuntime.h @@ -115,7 +115,7 @@ public: private: static int startReg(JNIEnv* env); - void parseExtraOpts(char* extraOptsBuf); + void parseExtraOpts(char* extraOptsBuf, const char* quotingArg); int startVm(JavaVM** pJavaVM, JNIEnv** pEnv); Vector<JavaVMOption> mOptions; |