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

Commit 4a02e071 authored by Dave Allison's avatar Dave Allison Committed by Android Git Automerger
Browse files

am 788fb96d: am 47653f2d: Merge "Move options buffers to top scope"

* commit '788fb96d':
  Move options buffers to top scope
parents 9873e099 788fb96d
Loading
Loading
Loading
Loading
+29 −23
Original line number Diff line number Diff line
@@ -434,6 +434,14 @@ void AndroidRuntime::parseExtraOpts(char* extraOptsBuf, const char* quotingArg)
 * Various arguments, most determined by system properties, are passed in.
 * The "mOptions" vector is updated.
 *
 * CAUTION: when adding options in here, be careful not to put the
 * char buffer inside a nested scope.  Adding the buffer to the
 * options using mOptions.add() does not copy the buffer, so if the
 * buffer goes out of scope the option may be overwritten.  It's best
 * to put the buffer at the top of the function so that it is more
 * unlikely that someone will surround it in a scope at a later time
 * and thus introduce a bug.
 *
 * Returns 0 on success.
 */
int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
@@ -468,7 +476,15 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
      kEMIntFast,
      kEMJitCompiler,
    } executionMode = kEMDefault;

    char profile_period[sizeof("-Xprofile-period:") + PROPERTY_VALUE_MAX];
    char profile_duration[sizeof("-Xprofile-duration:") + PROPERTY_VALUE_MAX];
    char profile_interval[sizeof("-Xprofile-interval:") + PROPERTY_VALUE_MAX];
    char profile_backoff[sizeof("-Xprofile-backoff:") + PROPERTY_VALUE_MAX];
    char langOption[sizeof("-Duser.language=") + 3];
    char regionOption[sizeof("-Duser.region=") + 3];
    char lockProfThresholdBuf[sizeof("-Xlockprofthreshold:") + sizeof(propBuf)];
    char jitOpBuf[sizeof("-Xjitop:") + PROPERTY_VALUE_MAX];
    char jitMethodBuf[sizeof("-Xjitmethod:") + PROPERTY_VALUE_MAX];

    property_get("dalvik.vm.checkjni", propBuf, "");
    if (strcmp(propBuf, "true") == 0) {
@@ -669,7 +685,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
        //mOptions.add(opt);
    }

    char lockProfThresholdBuf[sizeof("-Xlockprofthreshold:") + sizeof(propBuf)];
    property_get("dalvik.vm.lockprof.threshold", propBuf, "");
    if (strlen(propBuf) > 0) {
      strcpy(lockProfThresholdBuf, "-Xlockprofthreshold:");
@@ -679,7 +694,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
    }

    /* 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:");
@@ -689,7 +703,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
    }

    /* 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:");
@@ -769,8 +782,6 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)

    /* Set the properties for locale */
    {
        char langOption[sizeof("-Duser.language=") + 3];
        char regionOption[sizeof("-Duser.region=") + 3];
        strcpy(langOption, "-Duser.language=");
        strcpy(regionOption, "-Duser.region=");
        readLocale(langOption, regionOption);
@@ -785,35 +796,30 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)
     * Set profiler options
     */
    if (libart) {
      char period[sizeof("-Xprofile-period:") + PROPERTY_VALUE_MAX];
      char duration[sizeof("-Xprofile-duration:") + PROPERTY_VALUE_MAX];
      char interval[sizeof("-Xprofile-interval:") + PROPERTY_VALUE_MAX];
      char backoff[sizeof("-Xprofile-backoff:") + PROPERTY_VALUE_MAX];

      // Number of seconds during profile runs.
      strcpy(period, "-Xprofile-period:");
      property_get("dalvik.vm.profile.period_secs", period+17, "10");
      opt.optionString = period;
      strcpy(profile_period, "-Xprofile-period:");
      property_get("dalvik.vm.profile.period_secs", profile_period+17, "10");
      opt.optionString = profile_period;
      mOptions.add(opt);

      // Length of each profile run (seconds).
      strcpy(duration, "-Xprofile-duration:");
      property_get("dalvik.vm.profile.duration_secs", duration+19, "30");
      opt.optionString = duration;
      strcpy(profile_duration, "-Xprofile-duration:");
      property_get("dalvik.vm.profile.duration_secs", profile_duration+19, "30");
      opt.optionString = profile_duration;
      mOptions.add(opt);


      // Polling interval during profile run (microseconds).
      strcpy(interval, "-Xprofile-interval:");
      property_get("dalvik.vm.profile.interval_us", interval+19, "10000");
      opt.optionString = interval;
      strcpy(profile_interval, "-Xprofile-interval:");
      property_get("dalvik.vm.profile.interval_us", profile_interval+19, "10000");
      opt.optionString = profile_interval;
      mOptions.add(opt);

      // Coefficient for period backoff.  The the period is multiplied
      // by this value after each profile run.
      strcpy(backoff, "-Xprofile-backoff:");
      property_get("dalvik.vm.profile.backoff_coeff", backoff+18, "2.0");
      opt.optionString = backoff;
      strcpy(profile_backoff, "-Xprofile-backoff:");
      property_get("dalvik.vm.profile.backoff_coeff", profile_backoff+18, "2.0");
      opt.optionString = profile_backoff;
      mOptions.add(opt);
    }