From 688ed594ba5478f46ad4711889267a2dc47d5df5 Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Mon, 4 Feb 2019 15:48:09 +0000 Subject: [PATCH] Read "gctype" flag from namespace "runtime_native_boot". ART does not support changing the garbage collector type/configuration dynamically at the moment, so we can only change it when the runtime starts, i.e. at boot time. Also materialize "gctype" and "runtime_native_boot" as named constants. Bug: 120794191 Bug: 72446017 Test: adb shell device_config put runtime_native_boot gctype nogenerational_cc && adb reboot Test: adb shell device_config put runtime_native_boot gctype generational_cc && adb reboot (cherry picked from commit 7b098c8487a05360de8f80fde48cfd28a3aa8321) Change-Id: Ied0eacf46ab92ba128d0a538a314f42c18c5b8f5 Merged-In: Ibf765a5f442136d6327be99786ea9ae4b4537d59 --- core/jni/AndroidRuntime.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 55fb27e8d57c7..815b9631ff798 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -220,6 +220,11 @@ extern int register_com_android_internal_os_Zygote(JNIEnv *env); extern int register_com_android_internal_os_ZygoteInit(JNIEnv *env); extern int register_com_android_internal_util_VirtualRefBasePtr(JNIEnv *env); +// Namespace for Android Runtime flags applied during boot time. +static const char* RUNTIME_NATIVE_BOOT_NAMESPACE = "runtime_native_boot"; +// Feature flag name for Garbage Collector type. +static const char* GCTYPE = "gctype"; + static AndroidRuntime* gCurRuntime = NULL; /* @@ -771,7 +776,9 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) } std::string gc_type_override = - server_configurable_flags::GetServerConfigurableFlag("runtime_native", "gctype", ""); + server_configurable_flags::GetServerConfigurableFlag(RUNTIME_NATIVE_BOOT_NAMESPACE, + GCTYPE, + /*default_value=*/ ""); std::string gc_type_override_temp; if (gc_type_override.empty()) { parseRuntimeOption("dalvik.vm.gctype", gctypeOptsBuf, "-Xgc:");