diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java index 4834f9727f26c..0de9c702a2908 100644 --- a/core/java/android/os/Process.java +++ b/core/java/android/os/Process.java @@ -631,6 +631,9 @@ public class Process { if ((debugFlags & Zygote.DEBUG_ENABLE_CHECKJNI) != 0) { argsForZygote.add("--enable-checkjni"); } + if ((debugFlags & Zygote.DEBUG_ENABLE_JIT) != 0) { + argsForZygote.add("--enable-jit"); + } if ((debugFlags & Zygote.DEBUG_ENABLE_ASSERT) != 0) { argsForZygote.add("--enable-assert"); } diff --git a/core/java/com/android/internal/os/Zygote.java b/core/java/com/android/internal/os/Zygote.java index fced092b9e42b..8674a2111c184 100644 --- a/core/java/com/android/internal/os/Zygote.java +++ b/core/java/com/android/internal/os/Zygote.java @@ -34,10 +34,13 @@ public final class Zygote { public static final int DEBUG_ENABLE_CHECKJNI = 1 << 1; /** enable Java programming language "assert" statements */ public static final int DEBUG_ENABLE_ASSERT = 1 << 2; - /** disable the JIT compiler */ + /** disable the AOT compiler and JIT */ public static final int DEBUG_ENABLE_SAFEMODE = 1 << 3; /** Enable logging of third-party JNI activity. */ public static final int DEBUG_ENABLE_JNI_LOGGING = 1 << 4; + /** enable the JIT compiler */ + public static final int DEBUG_ENABLE_JIT = 1 << 5; + /** No external storage should be mounted. */ public static final int MOUNT_EXTERNAL_NONE = 0; diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java index 9c97cc1640e2b..0dc242d594191 100644 --- a/core/java/com/android/internal/os/ZygoteConnection.java +++ b/core/java/com/android/internal/os/ZygoteConnection.java @@ -322,7 +322,7 @@ class ZygoteConnection { /** * From --enable-debugger, --enable-checkjni, --enable-assert, - * --enable-safemode, and --enable-jni-logging. + * --enable-safemode, --enable-jit, and --enable-jni-logging. */ int debugFlags; @@ -432,6 +432,8 @@ class ZygoteConnection { debugFlags |= Zygote.DEBUG_ENABLE_SAFEMODE; } else if (arg.equals("--enable-checkjni")) { debugFlags |= Zygote.DEBUG_ENABLE_CHECKJNI; + } else if (arg.equals("--enable-jit")) { + debugFlags |= Zygote.DEBUG_ENABLE_JIT; } else if (arg.equals("--enable-jni-logging")) { debugFlags |= Zygote.DEBUG_ENABLE_JNI_LOGGING; } else if (arg.equals("--enable-assert")) { diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 34a5249b9225c..4ef171eada867 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -2991,6 +2991,15 @@ public final class ActivityManagerService extends ActivityManagerNative if ("1".equals(SystemProperties.get("debug.checkjni"))) { debugFlags |= Zygote.DEBUG_ENABLE_CHECKJNI; } + String jitDebugProperty = SystemProperties.get("debug.usejit"); + if ("true".equals(jitDebugProperty)) { + debugFlags |= Zygote.DEBUG_ENABLE_JIT; + } else if (!"false".equals(jitDebugProperty)) { + // If we didn't force disable by setting false, defer to the dalvik vm options. + if ("true".equals(SystemProperties.get("dalvik.vm.usejit"))) { + debugFlags |= Zygote.DEBUG_ENABLE_JIT; + } + } if ("1".equals(SystemProperties.get("debug.jni.logging"))) { debugFlags |= Zygote.DEBUG_ENABLE_JNI_LOGGING; }