From deafa792eb3805f69ecc652a7901056ce2edb4bc Mon Sep 17 00:00:00 2001 From: Zhi Dou Date: Tue, 5 Sep 2023 18:22:46 +0000 Subject: [PATCH] aconfig: flag java lib enable optimization This change adds annotation in the generated code. If the flag is read only, annotations @com.android.aconfig.annotations.AssumeTrueForR8 or @com.android.aconfig.annotations.AssumeFalseForR8 will be added in to the corresponding methods in the interface FeatureFlags, and class Flags. Test: atest aconfig aconfig.test.java Bug: 295328116 Change-Id: Ic1b62a86f0945a5e72ae2c4987cce77fe3f172e9 --- tools/aconfig/src/codegen_java.rs | 6 ++++++ tools/aconfig/templates/FeatureFlags.java.template | 7 +++++++ tools/aconfig/templates/Flags.java.template | 9 ++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/tools/aconfig/src/codegen_java.rs b/tools/aconfig/src/codegen_java.rs index 7cdf4869b2..c31d715867 100644 --- a/tools/aconfig/src/codegen_java.rs +++ b/tools/aconfig/src/codegen_java.rs @@ -119,9 +119,12 @@ mod tests { const EXPECTED_FEATUREFLAGS_COMMON_CONTENT: &str = r#" package com.android.aconfig.test; public interface FeatureFlags { + @com.android.aconfig.annotations.AssumeFalseForR8 boolean disabledRo(); boolean disabledRw(); + @com.android.aconfig.annotations.AssumeTrueForR8 boolean enabledFixedRo(); + @com.android.aconfig.annotations.AssumeTrueForR8 boolean enabledRo(); boolean enabledRw(); } @@ -136,15 +139,18 @@ mod tests { public static final String FLAG_ENABLED_RO = "com.android.aconfig.test.enabled_ro"; public static final String FLAG_ENABLED_RW = "com.android.aconfig.test.enabled_rw"; + @com.android.aconfig.annotations.AssumeFalseForR8 public static boolean disabledRo() { return FEATURE_FLAGS.disabledRo(); } public static boolean disabledRw() { return FEATURE_FLAGS.disabledRw(); } + @com.android.aconfig.annotations.AssumeTrueForR8 public static boolean enabledFixedRo() { return FEATURE_FLAGS.enabledFixedRo(); } + @com.android.aconfig.annotations.AssumeTrueForR8 public static boolean enabledRo() { return FEATURE_FLAGS.enabledRo(); } diff --git a/tools/aconfig/templates/FeatureFlags.java.template b/tools/aconfig/templates/FeatureFlags.java.template index e0f201fc88..31cfdfce8d 100644 --- a/tools/aconfig/templates/FeatureFlags.java.template +++ b/tools/aconfig/templates/FeatureFlags.java.template @@ -2,6 +2,13 @@ package {package_name}; public interface FeatureFlags \{ {{ for item in class_elements}} +{{ -if not item.is_read_write }} +{{ -if item.default_value }} + @com.android.aconfig.annotations.AssumeTrueForR8 +{{ -else }} + @com.android.aconfig.annotations.AssumeFalseForR8 +{{ -endif- }} +{{ endif }} boolean {item.method_name}(); {{ endfor }} } diff --git a/tools/aconfig/templates/Flags.java.template b/tools/aconfig/templates/Flags.java.template index 012eba6660..7f047001d2 100644 --- a/tools/aconfig/templates/Flags.java.template +++ b/tools/aconfig/templates/Flags.java.template @@ -5,6 +5,13 @@ public final class Flags \{ public static final String FLAG_{item.flag_name_constant_suffix} = "{item.device_config_flag}"; {{- endfor }} {{ for item in class_elements}} +{{ -if not item.is_read_write }} +{{ -if item.default_value }} + @com.android.aconfig.annotations.AssumeTrueForR8 +{{ -else }} + @com.android.aconfig.annotations.AssumeFalseForR8 +{{ -endif- }} +{{ endif }} public static boolean {item.method_name}() \{ return FEATURE_FLAGS.{item.method_name}(); } @@ -17,7 +24,7 @@ public final class Flags \{ public static void unsetFeatureFlags() \{ Flags.FEATURE_FLAGS = null; } -{{ endif}} +{{ endif }} private static FeatureFlags FEATURE_FLAGS{{ -if not is_test_mode }} = new FeatureFlagsImpl(){{ -endif- }}; }