aboutsummaryrefslogtreecommitdiffstats
path: root/dexpreopt
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2018-12-19 17:57:57 +0000
committerNicolas Geoffray <ngeoffray@google.com>2019-01-09 09:39:20 +0000
commitd2ee532fc329653ef94263f07931a6fc0a4aa1b3 (patch)
tree756f3eb9d718f5162bcd03ca046395b85cc08202 /dexpreopt
parent1f8076b42dfd99d01b720c027bafd7f671b1d12a (diff)
downloadbuild_soong-d2ee532fc329653ef94263f07931a6fc0a4aa1b3.tar.gz
build_soong-d2ee532fc329653ef94263f07931a6fc0a4aa1b3.tar.bz2
build_soong-d2ee532fc329653ef94263f07931a6fc0a4aa1b3.zip
Preopt: Pass -Xbootclasspath: arg to dex2oat.
Test: Pixel 2 XL boots. Bug: 119868597 Change-Id: Ibbff11d13a6d67034e783de2f7d8c930251bd899
Diffstat (limited to 'dexpreopt')
-rw-r--r--dexpreopt/config.go5
-rw-r--r--dexpreopt/dexpreopt.go6
-rw-r--r--dexpreopt/script.go5
3 files changed, 15 insertions, 1 deletions
diff --git a/dexpreopt/config.go b/dexpreopt/config.go
index c24caacb..13a14f4f 100644
--- a/dexpreopt/config.go
+++ b/dexpreopt/config.go
@@ -32,7 +32,10 @@ type GlobalConfig struct {
DisableGenerateProfile bool // don't generate profiles
- BootJars []string // jars that form the boot image
+ PreoptBootClassPathDexFiles []string // file paths of boot class path files
+ PreoptBootClassPathDexLocations []string // virtual locations of boot class path files
+
+ BootJars []string // modules for jars that form the boot class path
SystemServerJars []string // jars that form the system server
SystemServerApps []string // apps that are loaded into system server
SpeedApps []string // apps that should be speed optimized
diff --git a/dexpreopt/dexpreopt.go b/dexpreopt/dexpreopt.go
index 3b211063..4ad039f4 100644
--- a/dexpreopt/dexpreopt.go
+++ b/dexpreopt/dexpreopt.go
@@ -192,6 +192,9 @@ func dexpreoptCommand(global GlobalConfig, module ModuleConfig, rule *Rule, prof
pathtools.ReplaceExtension(filepath.Base(path), "odex"))
}
+ bcp := strings.Join(global.PreoptBootClassPathDexFiles, ":")
+ bcp_locations := strings.Join(global.PreoptBootClassPathDexLocations, ":")
+
odexPath := toOdexPath(filepath.Join(filepath.Dir(module.BuildPath), base))
odexInstallPath := toOdexPath(module.DexLocation)
if odexOnSystemOther(module, global) {
@@ -310,6 +313,9 @@ func dexpreoptCommand(global GlobalConfig, module ModuleConfig, rule *Rule, prof
FlagWithOutput("--write-invocation-to=", invocationPath).ImplicitOutput(invocationPath).
Flag("--runtime-arg").FlagWithArg("-Xms", global.Dex2oatXms).
Flag("--runtime-arg").FlagWithArg("-Xmx", global.Dex2oatXmx).
+ Flag("--runtime-arg").FlagWithArg("-Xbootclasspath:", bcp).
+ Implicits(global.PreoptBootClassPathDexFiles).
+ Flag("--runtime-arg").FlagWithArg("-Xbootclasspath-locations:", bcp_locations).
Flag("${class_loader_context_arg}").
Flag("${stored_class_loader_context_arg}").
FlagWithArg("--boot-image=", bootImageLocation).Implicit(bootImagePath).
diff --git a/dexpreopt/script.go b/dexpreopt/script.go
index fd4cf823..9d4329c5 100644
--- a/dexpreopt/script.go
+++ b/dexpreopt/script.go
@@ -147,6 +147,11 @@ func (c *Command) Implicit(path string) *Command {
return c
}
+func (c *Command) Implicits(paths []string) *Command {
+ c.inputs = append(c.inputs, paths...)
+ return c
+}
+
func (c *Command) Output(path string) *Command {
c.outputs = append(c.outputs, path)
return c.Text(path)