diff options
author | Brian Carlstrom <bdc@google.com> | 2014-07-28 19:13:28 -0700 |
---|---|---|
committer | Brian Carlstrom <bdc@google.com> | 2014-08-06 22:25:00 -0700 |
commit | 3fbfbb4adeec1dda1e149758ea302c386101f267 (patch) | |
tree | e24c0a50c90acfeabf8c79e19c1635910ffe8078 | |
parent | a25dc2bbe70b7449dc57e9619778ba592c198003 (diff) | |
download | frameworks_base-3fbfbb4adeec1dda1e149758ea302c386101f267.zip frameworks_base-3fbfbb4adeec1dda1e149758ea302c386101f267.tar.gz frameworks_base-3fbfbb4adeec1dda1e149758ea302c386101f267.tar.bz2 |
Move from dalvik.vm.image-dex2oat-flags to dalvik.vm.dex2oat-filter [frameworks/base]
This will allow us to conditionally change the compiler-filter based on other properties.
Bug: 15165413
(cherry picked from commit f60d3a4702f6d00d7edb5d348c53b9b03ae16b76)
Change-Id: I293c81ba817e9abbf9c05b3fb554ef2f0ad0c4ed
-rw-r--r-- | core/jni/AndroidRuntime.cpp | 42 | ||||
-rw-r--r-- | include/android_runtime/AndroidRuntime.h | 4 |
2 files changed, 46 insertions, 0 deletions
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 3a02ab9..2da23f6 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -475,6 +475,42 @@ bool AndroidRuntime::parseRuntimeOption(const char* property, /* * Reads a "property" into "buffer". If the property is non-empty, it + * is treated as a dex2oat compiler option that should be + * passed as a quoted option, e.g. "-Ximage-compiler-option --compiler-filter=verify-none". + * + * The "compilerArg" is a prefix for the option such as "--compiler-filter=". + * + * The "quotingArg" should be "-Ximage-compiler-option" or "-Xcompiler-option". + * + * If an option is found, it is added to mOptions and true is + * returned. Otherwise false is returned. + */ +bool AndroidRuntime::parseCompilerOption(const char* property, + char* buffer, + const char* compilerArg, + const char* quotingArg) +{ + strcpy(buffer, compilerArg); + size_t compilerArgLen = strlen(compilerArg); + property_get(property, buffer+compilerArgLen, ""); + if (buffer[compilerArgLen] == '\0') { + return false; + } + + JavaVMOption opt; + memset(&opt, 0, sizeof(opt)); + + opt.optionString = quotingArg; + mOptions.add(opt); + + opt.optionString = buffer; + mOptions.add(opt); + + return true; +} + +/* + * Reads a "property" into "buffer". If the property is non-empty, it * is treated as a dex2oat compiler runtime option that should be * passed as a quoted option, e.g. "-Ximage-compiler-option * --runtime-arg -Ximage-compiler-option -Xmx32m". @@ -556,6 +592,8 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) char dex2oatXmxImageFlagsBuf[sizeof("-Xmx")-1 + PROPERTY_VALUE_MAX]; char dex2oatXmsFlagsBuf[sizeof("-Xms")-1 + PROPERTY_VALUE_MAX]; char dex2oatXmxFlagsBuf[sizeof("-Xmx")-1 + PROPERTY_VALUE_MAX]; + char dex2oatCompilerFilterBuf[sizeof("--compiler-filter=")-1 + PROPERTY_VALUE_MAX]; + char dex2oatImageCompilerFilterBuf[sizeof("--compiler-filter=")-1 + PROPERTY_VALUE_MAX]; char dex2oatFlagsBuf[PROPERTY_VALUE_MAX]; char dex2oatImageFlagsBuf[PROPERTY_VALUE_MAX]; char extraOptsBuf[PROPERTY_VALUE_MAX]; @@ -792,6 +830,8 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) "-Xms", "-Ximage-compiler-option"); parseCompilerRuntimeOption("dalvik.vm.image-dex2oat-Xmx", dex2oatXmxImageFlagsBuf, "-Xmx", "-Ximage-compiler-option"); + parseCompilerOption("dalvik.vm.image-dex2oat-filter", dex2oatImageCompilerFilterBuf, + "--compiler-filter=", "-Ximage-compiler-option"); property_get("dalvik.vm.image-dex2oat-flags", dex2oatImageFlagsBuf, ""); parseExtraOpts(dex2oatImageFlagsBuf, "-Ximage-compiler-option"); @@ -800,6 +840,8 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) "-Xms", "-Xcompiler-option"); parseCompilerRuntimeOption("dalvik.vm.dex2oat-Xmx", dex2oatXmxFlagsBuf, "-Xmx", "-Xcompiler-option"); + parseCompilerOption("dalvik.vm.dex2oat-filter", dex2oatCompilerFilterBuf, + "--compiler-filter=", "-Xcompiler-option"); property_get("dalvik.vm.dex2oat-flags", dex2oatFlagsBuf, ""); parseExtraOpts(dex2oatFlagsBuf, "-Xcompiler-option"); } diff --git a/include/android_runtime/AndroidRuntime.h b/include/android_runtime/AndroidRuntime.h index 45aa745..379cabc 100644 --- a/include/android_runtime/AndroidRuntime.h +++ b/include/android_runtime/AndroidRuntime.h @@ -120,6 +120,10 @@ private: char* buffer, const char* runtimeArg, const char* defaultArg = ""); + bool parseCompilerOption(const char* property, + char* buffer, + const char* compilerArg, + const char* quotingArg); bool parseCompilerRuntimeOption(const char* property, char* buffer, const char* runtimeArg, |