Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d0bd7d3 authored by Brian Carlstrom's avatar Brian Carlstrom Committed by Android Git Automerger
Browse files

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

* commit '485e3b45':
  Add dex2oat-flags plumbing to AndroidRuntime
parents eed63ad6 485e3b45
Loading
Loading
Loading
Loading
+27 −6
Original line number Original line Diff line number Diff line
@@ -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 */
    {
    {
+1 −1
Original line number Original line Diff line number Diff line
@@ -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;