am 485e3b45: am 5c126c3d: Merge "Add dex2oat-flags plumbing to AndroidRuntime"

* commit '485e3b459491267ae1390e1df5ff8f7d4695f819':
  Add dex2oat-flags plumbing to AndroidRuntime
This commit is contained in:
Brian Carlstrom
2014-03-05 19:29:40 +00:00
committed by Android Git Automerger
2 changed files with 28 additions and 7 deletions

View File

@ -395,16 +395,16 @@ static void readLocale(char* language, char* region)
* *
* This will cut up "extraOptsBuf" as we chop it into individual options. * 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. * Adds the strings, if any, to mOptions.
*/ */
void AndroidRuntime::parseExtraOpts(char* extraOptsBuf) void AndroidRuntime::parseExtraOpts(char* extraOptsBuf, const char* quotingArg)
{ {
JavaVMOption opt; JavaVMOption opt;
char* start;
char* end;
memset(&opt, 0, sizeof(opt)); memset(&opt, 0, sizeof(opt));
start = extraOptsBuf; char* start = extraOptsBuf;
char* end = NULL;
while (*start != '\0') { while (*start != '\0') {
while (*start == ' ') /* skip leading whitespace */ while (*start == ' ') /* skip leading whitespace */
start++; start++;
@ -418,6 +418,11 @@ void AndroidRuntime::parseExtraOpts(char* extraOptsBuf)
*end++ = '\0'; /* mark end, advance to indicate more */ *end++ = '\0'; /* mark end, advance to indicate more */
opt.optionString = start; opt.optionString = start;
if (quotingArg != NULL) {
JavaVMOption quotingOpt;
quotingOpt.optionString = quotingArg;
mOptions.add(quotingOpt);
}
mOptions.add(opt); mOptions.add(opt);
start = end; start = end;
} }
@ -449,6 +454,9 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
char gctypeOptsBuf[sizeof("-Xgc:")-1 + PROPERTY_VALUE_MAX]; char gctypeOptsBuf[sizeof("-Xgc:")-1 + PROPERTY_VALUE_MAX];
char heaptargetutilizationOptsBuf[sizeof("-XX:HeapTargetUtilization=")-1 + PROPERTY_VALUE_MAX]; char heaptargetutilizationOptsBuf[sizeof("-XX:HeapTargetUtilization=")-1 + PROPERTY_VALUE_MAX];
char jitcodecachesizeOptsBuf[sizeof("-Xjitcodecachesize:")-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 extraOptsBuf[PROPERTY_VALUE_MAX];
char* stackTraceFile = NULL; char* stackTraceFile = NULL;
bool checkJni = false; bool checkJni = false;
@ -741,9 +749,22 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
mOptions.add(opt); 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 */ /* extra options; parse this late so it overrides others */
property_get("dalvik.vm.extra-opts", extraOptsBuf, ""); property_get("dalvik.vm.extra-opts", extraOptsBuf, "");
parseExtraOpts(extraOptsBuf); parseExtraOpts(extraOptsBuf, NULL);
/* Set the properties for locale */ /* Set the properties for locale */
{ {

View File

@ -115,7 +115,7 @@ public:
private: private:
static int startReg(JNIEnv* env); static int startReg(JNIEnv* env);
void parseExtraOpts(char* extraOptsBuf); void parseExtraOpts(char* extraOptsBuf, const char* quotingArg);
int startVm(JavaVM** pJavaVM, JNIEnv** pEnv); int startVm(JavaVM** pJavaVM, JNIEnv** pEnv);
Vector<JavaVMOption> mOptions; Vector<JavaVMOption> mOptions;