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

Commit ce4f5c44 authored by Nicolas Geoffray's avatar Nicolas Geoffray
Browse files

Pass to the runtime the primary zygote option.

Will be used to customize when methods get JITted in jitzygote mode.

Test: boots
Bug: 119800099
Change-Id: Ib6c70cccfd1be6c867319cf78b5b2e4aec00bc80
parent 9c2eef98
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -618,7 +618,7 @@ bool AndroidRuntime::parseCompilerRuntimeOption(const char* property,
 *
 * 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;
    char propBuf[PROPERTY_VALUE_MAX];
@@ -749,6 +749,10 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote)
    addOption("-verbose:gc");
    //addOption("-verbose:class");

    if (primary_zygote) {
        addOption("-Xprimaryzygote");
    }

    /*
     * The default starting and maximum size of the heap.  Larger
     * values should be specified in a product property override.
@@ -1110,6 +1114,8 @@ void AndroidRuntime::start(const char* className, const Vector<String8>& options
            className != NULL ? className : "(unknown)", getuid());

    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
@@ -1117,6 +1123,7 @@ void AndroidRuntime::start(const char* className, const Vector<String8>& options
     */
    for (size_t i = 0; i < options.size(); ++i) {
        if (options[i] == startSystemServer) {
            primary_zygote = true;
           /* track our progress through the boot sequence */
           const int LOG_BOOT_PROGRESS_START = 3000;
           LOG_EVENT_LONG(LOG_BOOT_PROGRESS_START,  ns2ms(systemTime(SYSTEM_TIME_MONOTONIC)));
@@ -1152,7 +1159,7 @@ void AndroidRuntime::start(const char* className, const Vector<String8>& options
    JniInvocation jni_invocation;
    jni_invocation.Init(NULL);
    JNIEnv* env;
    if (startVm(&mJavaVM, &env, zygote) != 0) {
    if (startVm(&mJavaVM, &env, zygote, primary_zygote) != 0) {
        return;
    }
    onVmCreated(env);
+1 −1
Original line number Diff line number Diff line
@@ -131,7 +131,7 @@ private:
                                    const char* runtimeArg,
                                    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;
    bool mExitWithoutCleanup;