Revert "Make ConfiguredJarList immutable"
This reverts commit 052f4727fea8fa279d36e6b25e74b325b7de7e19.
Reason for revert: Looks to have broken master b/171756871
Change-Id: I6b3b7039c3e3b8ac453734281cb8e7c71b65aed3
diff --git a/android/config.go b/android/config.go
index 8b5ede6..42a286c 100644
--- a/android/config.go
+++ b/android/config.go
@@ -1362,22 +1362,13 @@
}
// Append an (apex, jar) pair to the list.
-func (l *ConfiguredJarList) Append(apex string, jar string) ConfiguredJarList {
- // Create a copy of the backing arrays before appending to avoid sharing backing
- // arrays that are mutated across instances.
- apexes := make([]string, 0, len(l.apexes)+1)
- copy(apexes, l.apexes)
- apexes = append(apexes, apex)
-
- jars := make([]string, 0, len(l.jars)+1)
- copy(jars, l.jars)
- jars = append(l.jars, jar)
-
- return ConfiguredJarList{apexes, jars}
+func (l *ConfiguredJarList) Append(apex string, jar string) {
+ l.apexes = append(l.apexes, apex)
+ l.jars = append(l.jars, jar)
}
// Filter out sublist.
-func (l *ConfiguredJarList) RemoveList(list ConfiguredJarList) ConfiguredJarList {
+func (l *ConfiguredJarList) RemoveList(list ConfiguredJarList) {
apexes := make([]string, 0, l.Len())
jars := make([]string, 0, l.Len())
@@ -1389,7 +1380,13 @@
}
}
- return ConfiguredJarList{apexes, jars}
+ l.apexes = apexes
+ l.jars = jars
+}
+
+// A copy of itself.
+func (l *ConfiguredJarList) CopyOf() ConfiguredJarList {
+ return ConfiguredJarList{CopyOf(l.apexes), CopyOf(l.jars)}
}
// A copy of the list of strings containing jar components.
@@ -1464,16 +1461,17 @@
}
func CreateConfiguredJarList(ctx PathContext, list []string) ConfiguredJarList {
- apexes := make([]string, len(list))
- jars := make([]string, len(list))
+ apexes := make([]string, 0, len(list))
+ jars := make([]string, 0, len(list))
- for i, apexjar := range list {
+ l := ConfiguredJarList{apexes, jars}
+
+ for _, apexjar := range list {
apex, jar := splitConfiguredJarPair(ctx, apexjar)
- apexes[i] = apex
- jars[i] = jar
+ l.Append(apex, jar)
}
- return ConfiguredJarList{apexes, jars}
+ return l
}
func EmptyConfiguredJarList() ConfiguredJarList {
diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go
index c315124..0f8888a 100644
--- a/java/dexpreopt_config.go
+++ b/java/dexpreopt_config.go
@@ -81,12 +81,13 @@
targets := dexpreoptTargets(ctx)
deviceDir := android.PathForOutput(ctx, ctx.Config().DeviceName())
- artModules := global.ArtApexJars
+ artModules := global.ArtApexJars.CopyOf()
// With EMMA_INSTRUMENT_FRAMEWORK=true the Core libraries depend on jacoco.
if ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_FRAMEWORK") {
- artModules = artModules.Append("com.android.art", "jacocoagent")
+ artModules.Append("com.android.art", "jacocoagent")
}
- frameworkModules := global.BootJars.RemoveList(artModules)
+ frameworkModules := global.BootJars.CopyOf()
+ frameworkModules.RemoveList(artModules)
artSubdir := "apex/art_boot_images/javalib"
frameworkSubdir := "system/framework"