Merge "Pass to the runtime the primary zygote option." am: c9bcf869db

am: e21b8c9b57

Change-Id: I8285b5822b45f3d817ed9b1cf0fa269ec646f5b9
This commit is contained in:
Nicolas Geoffray
2019-06-14 01:43:06 -07:00
committed by android-build-merger
2 changed files with 10 additions and 3 deletions

View File

@@ -631,7 +631,7 @@ bool AndroidRuntime::parseCompilerRuntimeOption(const char* property,
* *
* Returns 0 on success. * Returns 0 on success.
*/ */
int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote, bool primary_zygote)
{ {
JavaVMInitArgs initArgs; JavaVMInitArgs initArgs;
char propBuf[PROPERTY_VALUE_MAX]; char propBuf[PROPERTY_VALUE_MAX];
@@ -762,6 +762,10 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote)
addOption("-verbose:gc"); addOption("-verbose:gc");
//addOption("-verbose:class"); //addOption("-verbose:class");
if (primary_zygote) {
addOption("-Xprimaryzygote");
}
/* /*
* The default starting and maximum size of the heap. Larger * The default starting and maximum size of the heap. Larger
* values should be specified in a product property override. * values should be specified in a product property override.
@@ -1123,6 +1127,8 @@ void AndroidRuntime::start(const char* className, const Vector<String8>& options
className != NULL ? className : "(unknown)", getuid()); className != NULL ? className : "(unknown)", getuid());
static const String8 startSystemServer("start-system-server"); static const String8 startSystemServer("start-system-server");
// Whether this is the primary zygote, meaning the zygote which will fork system server.
bool primary_zygote = false;
/* /*
* 'startSystemServer == true' means runtime is obsolete and not run from * 'startSystemServer == true' means runtime is obsolete and not run from
@@ -1130,6 +1136,7 @@ void AndroidRuntime::start(const char* className, const Vector<String8>& options
*/ */
for (size_t i = 0; i < options.size(); ++i) { for (size_t i = 0; i < options.size(); ++i) {
if (options[i] == startSystemServer) { if (options[i] == startSystemServer) {
primary_zygote = true;
/* track our progress through the boot sequence */ /* track our progress through the boot sequence */
const int LOG_BOOT_PROGRESS_START = 3000; const int LOG_BOOT_PROGRESS_START = 3000;
LOG_EVENT_LONG(LOG_BOOT_PROGRESS_START, ns2ms(systemTime(SYSTEM_TIME_MONOTONIC))); LOG_EVENT_LONG(LOG_BOOT_PROGRESS_START, ns2ms(systemTime(SYSTEM_TIME_MONOTONIC)));
@@ -1165,7 +1172,7 @@ void AndroidRuntime::start(const char* className, const Vector<String8>& options
JniInvocation jni_invocation; JniInvocation jni_invocation;
jni_invocation.Init(NULL); jni_invocation.Init(NULL);
JNIEnv* env; JNIEnv* env;
if (startVm(&mJavaVM, &env, zygote) != 0) { if (startVm(&mJavaVM, &env, zygote, primary_zygote) != 0) {
return; return;
} }
onVmCreated(env); onVmCreated(env);

View File

@@ -131,7 +131,7 @@ private:
const char* runtimeArg, const char* runtimeArg,
const char* quotingArg); const char* quotingArg);
void parseExtraOpts(char* extraOptsBuf, const char* quotingArg); void parseExtraOpts(char* extraOptsBuf, const char* quotingArg);
int startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote); int startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote, bool primary_zygote);
Vector<JavaVMOption> mOptions; Vector<JavaVMOption> mOptions;
bool mExitWithoutCleanup; bool mExitWithoutCleanup;