Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d9c97bd authored by Ulyana Trafimovich's avatar Ulyana Trafimovich Committed by Gerrit Code Review
Browse files

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

parents 289bd28f 57547452
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -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,

+2 −1
Original line number Diff line number Diff line
@@ -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)
+36 −16
Original line number Diff line number Diff line
@@ -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 {