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

Commit 5fba88bb authored by Jiakai Zhang's avatar Jiakai Zhang Committed by Gerrit Code Review
Browse files

Merge "Add a new option `compilerFilter` to `bootImageConfig`."

parents 2ae1bbb5 8e9ea8bb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1291,7 +1291,7 @@ func (module *PrebuiltBootclasspathFragmentModule) produceBootImageFiles(ctx and
		}
		return bootImageFiles
	} else {
		if profile == nil {
		if profile == nil && imageConfig.isProfileGuided() {
			ctx.ModuleErrorf("Unable to produce boot image files: neither boot image files nor profiles exists in the prebuilt apex")
			return bootImageOutputs{}
		}
+20 −6
Original line number Diff line number Diff line
@@ -287,6 +287,9 @@ type bootImageConfig struct {

	// Path of the preloaded classes file.
	preloadedClassesFile string

	// The "--compiler-filter" argument.
	compilerFilter string
}

// Target-dependent description of a boot image.
@@ -443,6 +446,10 @@ func (image *bootImageVariant) imageLocations() (imageLocationsOnHost []string,
		append(imageLocationsOnDevice, dexpreopt.PathStringToLocation(image.imagePathOnDevice, image.target.Arch.ArchType))
}

func (image *bootImageConfig) isProfileGuided() bool {
	return image.compilerFilter == "speed-profile"
}

func dexpreoptBootJarsFactory() android.SingletonModule {
	m := &dexpreoptBootJars{}
	android.InitAndroidModule(m)
@@ -721,12 +728,14 @@ func buildBootImageVariant(ctx android.ModuleContext, image *bootImageVariant, p
		cmd.FlagWithArg("--base=", ctx.Config().LibartImgDeviceBaseAddress())
	}

	if len(image.preloadedClassesFile) > 0 {
		// We always expect a preloaded classes file to be available. However, if we cannot find it, it's
		// OK to not pass the flag to dex2oat.
		preloadedClassesPath := android.ExistentPathForSource(ctx, image.preloadedClassesFile)
		if preloadedClassesPath.Valid() {
			cmd.FlagWithInput("--preloaded-classes=", preloadedClassesPath.Path())
		}
	}

	cmd.
		FlagForEachInput("--dex-file=", image.dexPaths.Paths()).
@@ -743,7 +752,8 @@ func buildBootImageVariant(ctx android.ModuleContext, image *bootImageVariant, p
		FlagWithArg("--android-root=", global.EmptyDirectory).
		FlagWithArg("--no-inline-from=", "core-oj.jar").
		Flag("--force-determinism").
		Flag("--abort-on-hard-verifier-error")
		Flag("--abort-on-hard-verifier-error").
		FlagWithArg("--compiler-filter=", image.compilerFilter)

	// Use the default variant/features for host builds.
	// The map below contains only device CPU info (which might be x86 on some devices).
@@ -828,6 +838,10 @@ It is likely that the boot classpath is inconsistent.
Rebuild with ART_BOOT_IMAGE_EXTRA_ARGS="--runtime-arg -verbose:verifier" to see verification errors.`

func bootImageProfileRule(ctx android.ModuleContext, image *bootImageConfig) android.WritablePath {
	if !image.isProfileGuided() {
		return nil
	}

	globalSoong := dexpreopt.GetGlobalSoongConfig(ctx)
	global := dexpreopt.GetGlobalConfig(ctx)

+2 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig
			profileInstallPathInApex: "etc/boot-image.prof",
			modules:                  artModules,
			preloadedClassesFile:     "art/build/boot/preloaded-classes",
			compilerFilter:           "speed-profile",
		}

		// Framework config for the boot image extension.
@@ -76,6 +77,7 @@ func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig
			installDirOnDevice:   frameworkSubdir,
			modules:              frameworkModules,
			preloadedClassesFile: "frameworks/base/config/preloaded-classes",
			compilerFilter:       "speed-profile",
		}

		return map[string]*bootImageConfig{