From 616be0695e93c6150470c8b9ca5e1bd372de1d5b Mon Sep 17 00:00:00 2001 From: Jiakai Zhang Date: Wed, 16 Nov 2022 11:50:59 +0000 Subject: [PATCH] Pass "-Xgc:CMC" to dex2oat when userfaultfd GC is enabled. This change is a no-op change. It doesn't enable userfaultfd GC by default. ENABLE_UFFD_GC=true can be passed to the build system to enable userfaultfd GC for testing purposes. Bug: 242553398 Test: - 1. lunch aosp_oriole-userdebug 2. ENABLE_UFFD_GC=true m 3. See "--runtime-arg -Xgc:CMC" in .invocation files. Change-Id: I789b49a71b9604fd41bf1ef77d0ac5bac4cbdf25 --- dexpreopt/config.go | 2 ++ dexpreopt/dexpreopt.go | 4 ++++ java/dexpreopt_bootjars.go | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/dexpreopt/config.go b/dexpreopt/config.go index eefda197c..609a29c2d 100644 --- a/dexpreopt/config.go +++ b/dexpreopt/config.go @@ -96,6 +96,8 @@ type GlobalConfig struct { // quickly silence build errors. This flag should be used with caution and only as a temporary // measure, as it masks real errors and affects performance. RelaxUsesLibraryCheck bool + + EnableUffdGc bool // preopt with the assumption that userfaultfd GC will be used on device. } var allPlatformSystemServerJarsKey = android.NewOnceKey("allPlatformSystemServerJars") diff --git a/dexpreopt/dexpreopt.go b/dexpreopt/dexpreopt.go index fdfd22e1b..e3404a541 100644 --- a/dexpreopt/dexpreopt.go +++ b/dexpreopt/dexpreopt.go @@ -495,6 +495,10 @@ func dexpreoptCommand(ctx android.PathContext, globalSoong *GlobalSoongConfig, g cmd.FlagWithInput("--profile-file=", profile) } + if global.EnableUffdGc { + cmd.Flag("--runtime-arg").Flag("-Xgc:CMC") + } + rule.Install(odexPath, odexInstallPath) rule.Install(vdexPath, vdexInstallPath) } diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go index b3faae895..3effff649 100644 --- a/java/dexpreopt_bootjars.go +++ b/java/dexpreopt_bootjars.go @@ -752,6 +752,10 @@ func buildBootImageVariant(ctx android.ModuleContext, image *bootImageVariant, p cmd.FlagWithArg("--instruction-set-features=", global.InstructionSetFeatures[arch]) } + if global.EnableUffdGc { + cmd.Flag("--runtime-arg").Flag("-Xgc:CMC") + } + if global.BootFlags != "" { cmd.Flag(global.BootFlags) }