Loading core/jni/AndroidRuntime.cpp +29 −23 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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) { Loading Loading @@ -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:"); Loading @@ -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:"); Loading @@ -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:"); Loading Loading @@ -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); Loading @@ -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); } Loading Loading
core/jni/AndroidRuntime.cpp +29 −23 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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) { Loading Loading @@ -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:"); Loading @@ -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:"); Loading @@ -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:"); Loading Loading @@ -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); Loading @@ -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); } Loading