Merge "Use boot image extension in the JIT-zygote experiment."

This commit is contained in:
Ulyana Trafimovich
2020-01-13 10:38:01 +00:00
committed by Gerrit Code Review
3 changed files with 41 additions and 24 deletions

View File

@@ -106,9 +106,8 @@ func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.Mo
global := dexpreoptGlobalConfig(ctx)
bootImage := defaultBootImageConfig(ctx)
defaultBootImage := bootImage
if global.UseApexImage {
bootImage = apexBootImageConfig(ctx)
bootImage = frameworkJZBootImageConfig(ctx)
}
var archs []android.ArchType
@@ -179,11 +178,8 @@ func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.Mo
DexPreoptImagesDeps: imagesDeps,
DexPreoptImageLocations: bootImage.imageLocations,
// We use the dex paths and dex locations of the default boot image, as it
// contains the full dexpreopt boot classpath. Other images may just contain a subset of
// the dexpreopt boot classpath.
PreoptBootClassPathDexFiles: defaultBootImage.dexPathsDeps.Paths(),
PreoptBootClassPathDexLocations: defaultBootImage.dexLocationsDeps,
PreoptBootClassPathDexFiles: bootImage.dexPathsDeps.Paths(),
PreoptBootClassPathDexLocations: bootImage.dexLocationsDeps,
PreoptExtractedApk: false,

View File

@@ -220,7 +220,8 @@ func (d *dexpreoptBootJars) GenerateBuildActions(ctx android.SingletonContext) {
d.otherImages = append(d.otherImages, buildBootImage(ctx, artBootImageConfig(ctx)))
if global.GenerateApexImage {
// Create boot images for the JIT-zygote experiment.
d.otherImages = append(d.otherImages, buildBootImage(ctx, apexBootImageConfig(ctx)))
d.otherImages = append(d.otherImages, buildBootImage(ctx, artJZBootImageConfig(ctx)))
d.otherImages = append(d.otherImages, buildBootImage(ctx, frameworkJZBootImageConfig(ctx)))
}
dumpOatRules(ctx, d.defaultBootImage)

View File

@@ -125,7 +125,8 @@ var (
bootImageConfigKey = android.NewOnceKey("bootImageConfig")
artBootImageName = "art"
frameworkBootImageName = "boot"
apexBootImageName = "apex"
artJZBootImageName = "jitzygote-art"
frameworkJZBootImageName = "jitzygote-boot"
)
// Construct the global boot image configs.
@@ -179,22 +180,33 @@ func genBootImageConfigs(ctx android.PathContext) map[string]*bootImageConfig {
dexLocationsDeps: append(artLocations, frameworkLocations...),
}
// Apex config for the boot image used in the JIT-zygote experiment.
// It includes both the Core libraries and framework.
apexCfg := bootImageConfig{
// ART config for JIT-zygote boot image.
artJZCfg := bootImageConfig{
extension: false,
name: apexBootImageName,
name: artJZBootImageName,
stem: "apex",
installSubdir: artSubdir,
modules: artModules,
dexLocations: artLocations,
dexLocationsDeps: artLocations,
}
// Framework config for JIT-zygote boot image extension.
frameworkJZCfg := bootImageConfig{
extension: true,
name: frameworkJZBootImageName,
stem: "apex",
installSubdir: frameworkSubdir,
modules: concat(artModules, frameworkModules),
dexLocations: concat(artLocations, frameworkLocations),
dexLocationsDeps: concat(artLocations, frameworkLocations),
modules: frameworkModules,
dexLocations: frameworkLocations,
dexLocationsDeps: append(artLocations, frameworkLocations...),
}
configs := map[string]*bootImageConfig{
artBootImageName: &artCfg,
frameworkBootImageName: &frameworkCfg,
apexBootImageName: &apexCfg,
artJZBootImageName: &artJZCfg,
frameworkJZBootImageName: &frameworkJZCfg,
}
// common to all configs
@@ -236,6 +248,10 @@ func genBootImageConfigs(ctx android.PathContext) map[string]*bootImageConfig {
frameworkCfg.dexPathsDeps = append(artCfg.dexPathsDeps, frameworkCfg.dexPathsDeps...)
frameworkCfg.imageLocations = append(artCfg.imageLocations, frameworkCfg.imageLocations...)
// specific to the jitzygote-framework config
frameworkJZCfg.dexPathsDeps = append(artJZCfg.dexPathsDeps, frameworkJZCfg.dexPathsDeps...)
frameworkJZCfg.imageLocations = append(artJZCfg.imageLocations, frameworkJZCfg.imageLocations...)
return configs
}).(map[string]*bootImageConfig)
}
@@ -248,8 +264,12 @@ func defaultBootImageConfig(ctx android.PathContext) bootImageConfig {
return *genBootImageConfigs(ctx)[frameworkBootImageName]
}
func apexBootImageConfig(ctx android.PathContext) bootImageConfig {
return *genBootImageConfigs(ctx)[apexBootImageName]
func artJZBootImageConfig(ctx android.PathContext) bootImageConfig {
return *genBootImageConfigs(ctx)[artJZBootImageName]
}
func frameworkJZBootImageConfig(ctx android.PathContext) bootImageConfig {
return *genBootImageConfigs(ctx)[frameworkJZBootImageName]
}
func defaultBootclasspath(ctx android.PathContext) []string {