Merge "Pass to the runtime the primary zygote option." am: c9bcf869db
am: e21b8c9b57
Change-Id: I8285b5822b45f3d817ed9b1cf0fa269ec646f5b9
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user