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

Commit 451c7fc4 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 4811

* changes:
  Process new property definitions for JIT-specific options for apps performance tuning and debugging.
parents 44c6e3e7 52b0e734
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -11,6 +11,10 @@ else
	LOCAL_CFLAGS += -DPACKED=""
endif

ifeq ($(WITH_JIT),true)
	LOCAL_CFLAGS += -DWITH_JIT
endif

ifneq ($(USE_CUSTOM_RUNTIME_HEAP_MAX),)
  LOCAL_CFLAGS += -DCUSTOM_RUNTIME_HEAP_MAX=$(USE_CUSTOM_RUNTIME_HEAP_MAX)
endif
+70 −1
Original line number Diff line number Diff line
@@ -529,7 +529,14 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
    bool checkJni = false;
    bool checkDexSum = false;
    bool logStdio = false;
    enum { kEMDefault, kEMIntPortable, kEMIntFast } executionMode = kEMDefault;
    enum {
      kEMDefault,
      kEMIntPortable,
      kEMIntFast,
#if defined(WITH_JIT)
      kEMJitCompiler,
#endif
    } executionMode = kEMDefault;


    property_get("dalvik.vm.checkjni", propBuf, "");
@@ -548,6 +555,10 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
        executionMode = kEMIntPortable;
    } else if (strcmp(propBuf, "int:fast") == 0) {
        executionMode = kEMIntFast;
#if defined(WITH_JIT)
    } else if (strcmp(propBuf, "int:jit") == 0) {
        executionMode = kEMJitCompiler;
#endif
    }

    property_get("dalvik.vm.stack-trace-file", stackTraceFileBuf, "");
@@ -684,12 +695,70 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
        //opt.optionString = "-verbose:jni";
        //mOptions.add(opt);
    }

#if defined(WITH_JIT)
    /* Minimal profile threshold to trigger JIT compilation */
    char jitThresholdBuf[sizeof("-Xthreshold:") + PROPERTY_VALUE_MAX];
    property_get("dalvik.vm.jit.threshold", propBuf, "");
    if (strlen(propBuf) > 0) {
        strcpy(jitThresholdBuf, "-Xthreshold:");
        strcat(jitThresholdBuf, propBuf);
        opt.optionString = jitThresholdBuf;
        mOptions.add(opt);
    }

    /* Force interpreter-only mode for selected opcodes. Eg "1-0a,3c,f1-ff" */
    char jitOpBuf[sizeof("-Xjitop:") + PROPERTY_VALUE_MAX];
    property_get("dalvik.vm.jit.op", propBuf, "");
    if (strlen(propBuf) > 0) {
        strcpy(jitOpBuf, "-Xjitop:");
        strcat(jitOpBuf, propBuf);
        opt.optionString = jitOpBuf;
        mOptions.add(opt);
    }

    /*
     * Reverse the polarity of dalvik.vm.jit.op and force interpreter-only
     * for non-selected opcodes.
     */
    property_get("dalvik.vm.jit.includeselectedop", propBuf, "");
    if (strlen(propBuf) > 0) {
        opt.optionString = "-Xincludeselectedop";
        mOptions.add(opt);
    }

    /* Force interpreter-only mode for selected methods */
    char jitMethodBuf[sizeof("-Xjitmethod:") + PROPERTY_VALUE_MAX];
    property_get("dalvik.vm.jit.method", propBuf, "");
    if (strlen(propBuf) > 0) {
        strcpy(jitMethodBuf, "-Xjitmethod:");
        strcat(jitMethodBuf, propBuf);
        opt.optionString = jitMethodBuf;
        mOptions.add(opt);
    }

    /*
     * Reverse the polarity of dalvik.vm.jit.method and force interpreter-only
     * for non-selected methods.
     */
    property_get("dalvik.vm.jit.includeselectedmethod", propBuf, "");
    if (strlen(propBuf) > 0) {
        opt.optionString = "-Xincludeselectedmethod";
        mOptions.add(opt);
    }
#endif

    if (executionMode == kEMIntPortable) {
        opt.optionString = "-Xint:portable";
        mOptions.add(opt);
    } else if (executionMode == kEMIntFast) {
        opt.optionString = "-Xint:fast";
        mOptions.add(opt);
#if defined(WITH_JIT)
    } else if (executionMode == kEMJitCompiler) {
        opt.optionString = "-Xint:jit";
        mOptions.add(opt);
#endif
    }

    if (checkDexSum) {