diff options
Diffstat (limited to 'chromium/third_party/r8/patches')
-rw-r--r-- | chromium/third_party/r8/patches/0001-Chrome-Change-meaning-of-file-per-class.patch | 29 | ||||
-rw-r--r-- | chromium/third_party/r8/patches/0001-Desugaring-Make-all-lambdas-stateless-fix-naming-sch.patch (renamed from chromium/third_party/r8/patches/0003-Desugaring-Make-all-lambdas-stateless-fix-naming.patch) | 8 | ||||
-rw-r--r-- | chromium/third_party/r8/patches/0002-Adds-feature-jar-to-R8-command.patch | 64 | ||||
-rw-r--r-- | chromium/third_party/r8/patches/0002-Make-class-merging-and-outlining-settable-via-comman.patch (renamed from chromium/third_party/r8/patches/0004-Make-class-merging-and-outlining-settable-via.patch) | 12 | ||||
-rw-r--r-- | chromium/third_party/r8/patches/0003-Allow-access-modification-everywhere.patch | 30 | ||||
-rw-r--r-- | chromium/third_party/r8/patches/0005-Fix-up-proguard-keeps-for-Chrome.patch | 26 | ||||
-rw-r--r-- | chromium/third_party/r8/patches/0006-Add-desugared-library-keep-rule-output-to-R8-command.patch | 69 |
7 files changed, 40 insertions, 198 deletions
diff --git a/chromium/third_party/r8/patches/0001-Chrome-Change-meaning-of-file-per-class.patch b/chromium/third_party/r8/patches/0001-Chrome-Change-meaning-of-file-per-class.patch deleted file mode 100644 index 07d809a48bf..00000000000 --- a/chromium/third_party/r8/patches/0001-Chrome-Change-meaning-of-file-per-class.patch +++ /dev/null @@ -1,29 +0,0 @@ -From d9bab8bcf0e7ae33fb878327b850623cfa0504fe Mon Sep 17 00:00:00 2001 -From: Andrew Grieve <agrieve@chromium.org> -Date: Mon, 27 Apr 2020 14:53:10 -0400 -Subject: [PATCH 1/6] Chrome: Change meaning of --file-per-class - -Make it mean OutputMode.DexFilePerClassFile instead of -OutputMode.DexFilePerClass. - -Fixes Chrome's incremental dexing logic. ---- - src/main/java/com/android/tools/r8/D8CommandParser.java | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/main/java/com/android/tools/r8/D8CommandParser.java b/src/main/java/com/android/tools/r8/D8CommandParser.java -index 3c7fdd2c2..e3d6f1c8f 100644 ---- a/src/main/java/com/android/tools/r8/D8CommandParser.java -+++ b/src/main/java/com/android/tools/r8/D8CommandParser.java -@@ -209,7 +209,7 @@ public class D8CommandParser extends BaseCompilerCommandParser<D8Command, D8Comm - } - compilationMode = CompilationMode.RELEASE; - } else if (arg.equals("--file-per-class")) { -- outputMode = OutputMode.DexFilePerClass; -+ outputMode = OutputMode.DexFilePerClassFile; - } else if (arg.equals("--classfile")) { - outputMode = OutputMode.ClassFile; - } else if (arg.equals("--output")) { --- -2.26.2.761.g0e0b3e54be-goog - diff --git a/chromium/third_party/r8/patches/0003-Desugaring-Make-all-lambdas-stateless-fix-naming.patch b/chromium/third_party/r8/patches/0001-Desugaring-Make-all-lambdas-stateless-fix-naming-sch.patch index f7c7c6c3e2c..7014469ea3e 100644 --- a/chromium/third_party/r8/patches/0003-Desugaring-Make-all-lambdas-stateless-fix-naming.patch +++ b/chromium/third_party/r8/patches/0001-Desugaring-Make-all-lambdas-stateless-fix-naming-sch.patch @@ -1,7 +1,7 @@ -From 4fbdadba00834e5fd2f7863ed387bc06c761d37b Mon Sep 17 00:00:00 2001 +From 5590ed46ec10f3f6a464c81b8f66367dbe43d0f3 Mon Sep 17 00:00:00 2001 From: Sam Maier <smaier@chromium.org> Date: Tue, 19 May 2020 15:55:44 -0400 -Subject: [PATCH 3/6] Desugaring: Make all lambdas stateless & fix naming +Subject: [PATCH 1/3] Desugaring: Make all lambdas stateless & fix naming scheme of method references Statefull lambdas regress dex size. @@ -12,7 +12,7 @@ Bug: b/129997269 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java -index f41bdce43..0dbdc24eb 100644 +index d203a1296..395836efa 100644 --- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java +++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java @@ -128,7 +128,8 @@ public final class LambdaClass { @@ -35,5 +35,5 @@ index f41bdce43..0dbdc24eb 100644 void addSynthesizedFrom(DexProgramClass clazz) { -- -2.26.2.761.g0e0b3e54be-goog +2.27.0.278.ge193c7cf3a9-goog diff --git a/chromium/third_party/r8/patches/0002-Adds-feature-jar-to-R8-command.patch b/chromium/third_party/r8/patches/0002-Adds-feature-jar-to-R8-command.patch deleted file mode 100644 index 7be293752d0..00000000000 --- a/chromium/third_party/r8/patches/0002-Adds-feature-jar-to-R8-command.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 78acee122ca6d379c917ed339c54f8909c7953bf Mon Sep 17 00:00:00 2001 -From: Andrew Grieve <agrieve@chromium.org> -Date: Mon, 27 Apr 2020 15:00:00 -0400 -Subject: [PATCH 2/6] Adds --feature-jar to R8 command - -Chrome needs this to expose feature splits via command-line ---- - src/main/java/com/android/tools/r8/R8Command.java | 12 ++++++++++++ - .../java/com/android/tools/r8/R8CommandParser.java | 9 +++++++++ - 2 files changed, 21 insertions(+) - -diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java -index 656f3aa47..909b7bc93 100644 ---- a/src/main/java/com/android/tools/r8/R8Command.java -+++ b/src/main/java/com/android/tools/r8/R8Command.java -@@ -70,6 +70,18 @@ public final class R8Command extends BaseCompilerCommand { - */ - @Keep - public static class Builder extends BaseCompilerCommand.Builder<R8Command, Builder> { -+ public Builder addFeatureJar(Path[] inputJarPaths, Path outputPath) { -+ addFeatureSplit(builder -> { -+ builder.setProgramConsumer(FileUtils.isArchive(outputPath) -+ ? new DexIndexedConsumer.ArchiveConsumer(outputPath) -+ : new DexIndexedConsumer.DirectoryConsumer(outputPath)); -+ for (Path p : inputJarPaths) { -+ builder.addProgramResourceProvider(ArchiveProgramResourceProvider.fromArchive(p)); -+ } -+ return builder.build(); -+ }); -+ return self(); -+ } - - private static class DefaultR8DiagnosticsHandler implements DiagnosticsHandler { - -diff --git a/src/main/java/com/android/tools/r8/R8CommandParser.java b/src/main/java/com/android/tools/r8/R8CommandParser.java -index d31606dea..8d286601c 100644 ---- a/src/main/java/com/android/tools/r8/R8CommandParser.java -+++ b/src/main/java/com/android/tools/r8/R8CommandParser.java -@@ -24,6 +24,7 @@ public class R8CommandParser extends BaseCompilerCommandParser<R8Command, R8Comm - MIN_API_FLAG, - "--main-dex-rules", - "--main-dex-list", -+ "--feature-jar", - "--main-dex-list-output", - "--pg-conf", - "--pg-map-output", -@@ -214,6 +215,14 @@ public class R8CommandParser extends BaseCompilerCommandParser<R8Command, R8Comm - builder.setDisableDesugaring(true); - } else if (arg.equals("--main-dex-rules")) { - builder.addMainDexRulesFiles(Paths.get(nextArg)); -+ } else if (arg.equals("--feature-jar")) { -+ String[] argParts = nextArg.split(":"); -+ Path outputPath = Paths.get(argParts[0]); -+ Path[] inputPaths = new Path[argParts.length - 1]; -+ for (int j = 1; j < argParts.length; ++j) { -+ inputPaths[j - 1] = Paths.get(argParts[j]); -+ } -+ builder.addFeatureJar(inputPaths, outputPath); - } else if (arg.equals("--main-dex-list")) { - builder.addMainDexListFiles(Paths.get(nextArg)); - } else if (arg.equals("--main-dex-list-output")) { --- -2.26.2.761.g0e0b3e54be-goog - diff --git a/chromium/third_party/r8/patches/0004-Make-class-merging-and-outlining-settable-via.patch b/chromium/third_party/r8/patches/0002-Make-class-merging-and-outlining-settable-via-comman.patch index 382cfae27bd..a0a7ab8ca66 100644 --- a/chromium/third_party/r8/patches/0004-Make-class-merging-and-outlining-settable-via.patch +++ b/chromium/third_party/r8/patches/0002-Make-class-merging-and-outlining-settable-via-comman.patch @@ -1,7 +1,7 @@ -From b5cf822a88747e6026dd9743d71cef2d5ee53fa2 Mon Sep 17 00:00:00 2001 +From 3986e3336101178e075d06640a888fa260b6bc87 Mon Sep 17 00:00:00 2001 From: Sam Maier <smaier@chromium.org> Date: Tue, 19 May 2020 16:24:11 -0400 -Subject: [PATCH 4/6] Make class merging and outlining settable via +Subject: [PATCH 2/3] Make class merging and outlining settable via command-line --- @@ -9,10 +9,10 @@ Subject: [PATCH 4/6] Make class merging and outlining settable via 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java -index 997d4e905..06df3675d 100644 +index 00a213693..a831b6833 100644 --- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java +++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java -@@ -220,8 +220,8 @@ public class InternalOptions { +@@ -216,8 +216,8 @@ public class InternalOptions { public boolean enableFieldAssignmentTracker = true; public boolean enableFieldBitAccessAnalysis = System.getProperty("com.android.tools.r8.fieldBitAccessAnalysis") != null; @@ -23,7 +23,7 @@ index 997d4e905..06df3675d 100644 public boolean enableArgumentRemoval = true; public boolean enableUnusedInterfaceRemoval = true; public boolean enableDevirtualization = true; -@@ -1057,7 +1057,7 @@ public class InternalOptions { +@@ -1046,7 +1046,7 @@ public class InternalOptions { public static final String CLASS_NAME = "com.android.tools.r8.GeneratedOutlineSupport"; public static final String METHOD_PREFIX = "outline"; @@ -33,5 +33,5 @@ index 997d4e905..06df3675d 100644 public int maxSize = 99; public int threshold = 20; -- -2.26.2.761.g0e0b3e54be-goog +2.27.0.278.ge193c7cf3a9-goog diff --git a/chromium/third_party/r8/patches/0003-Allow-access-modification-everywhere.patch b/chromium/third_party/r8/patches/0003-Allow-access-modification-everywhere.patch new file mode 100644 index 00000000000..d0806db23cd --- /dev/null +++ b/chromium/third_party/r8/patches/0003-Allow-access-modification-everywhere.patch @@ -0,0 +1,30 @@ +From 445cc7889a6f470daba1a7056ea32bf9faf3e2d9 Mon Sep 17 00:00:00 2001 +From: Andrew Grieve <agrieve@chromium.org> +Date: Sun, 31 May 2020 22:09:27 -0400 +Subject: [PATCH 3/3] Allow access modification everywhere + +Chrome does not need need -keep to maintain original visibility. +Loosening this constraint allows for better optimization, and is easier +than adding ",allowaccessmodification" to every single -keep rule. +--- + .../com/android/tools/r8/shaking/AppInfoWithLiveness.java | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java +index 87bfd9a2d..75bc46e33 100644 +--- a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java ++++ b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java +@@ -918,9 +918,7 @@ public class AppInfoWithLiveness extends AppInfoWithClassHierarchy + + public boolean isAccessModificationAllowed(DexReference reference) { + assert options().getProguardConfiguration().isAccessModificationAllowed(); +- return keepInfo +- .getInfo(reference, this) +- .isAccessModificationAllowed(options().getProguardConfiguration()); ++ return true; + } + + public boolean isPinned(DexReference reference) { +-- +2.27.0.278.ge193c7cf3a9-goog + diff --git a/chromium/third_party/r8/patches/0005-Fix-up-proguard-keeps-for-Chrome.patch b/chromium/third_party/r8/patches/0005-Fix-up-proguard-keeps-for-Chrome.patch deleted file mode 100644 index baf30408af1..00000000000 --- a/chromium/third_party/r8/patches/0005-Fix-up-proguard-keeps-for-Chrome.patch +++ /dev/null @@ -1,26 +0,0 @@ -From bf551ce100964a415341e8c30a067720c4be85eb Mon Sep 17 00:00:00 2001 -From: Sam Maier <smaier@chromium.org> -Date: Tue, 19 May 2020 16:27:53 -0400 -Subject: [PATCH 5/6] Fix up proguard keeps for Chrome - ---- - src/main/keep.txt | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/main/keep.txt b/src/main/keep.txt -index 7791d4e88..182ea9d37 100644 ---- a/src/main/keep.txt -+++ b/src/main/keep.txt -@@ -23,3 +23,9 @@ - - # Compatibility command line program used by the Android Platform build. - -keep public class com.android.tools.r8.compatproguard.CompatProguard { public static void main(java.lang.String[]); } -+ -+-keep public class com.android.tools.r8.SwissArmyKnife { *; } -+ -+# Chrome: We want to maintain stack traces from the R8 tool, so disable -+# optimizations. -+-dontoptimize --- -2.26.2.761.g0e0b3e54be-goog - diff --git a/chromium/third_party/r8/patches/0006-Add-desugared-library-keep-rule-output-to-R8-command.patch b/chromium/third_party/r8/patches/0006-Add-desugared-library-keep-rule-output-to-R8-command.patch deleted file mode 100644 index 23a49b8a9d6..00000000000 --- a/chromium/third_party/r8/patches/0006-Add-desugared-library-keep-rule-output-to-R8-command.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 7b68ccb6caa68235fc325c26ec559d9a5f0e116e Mon Sep 17 00:00:00 2001 -From: Sam Maier <smaier@chromium.org> -Date: Wed, 20 May 2020 15:29:37 -0400 -Subject: [PATCH 6/6] Add --desugared-library-keep-rule-output to R8 command - -Chrome needs this to export the keep rule file to optimize -imported library. ---- - src/main/java/com/android/tools/r8/L8CommandParser.java | 2 +- - src/main/java/com/android/tools/r8/R8CommandParser.java | 9 ++++++++- - 2 files changed, 9 insertions(+), 2 deletions(-) - -diff --git a/src/main/java/com/android/tools/r8/L8CommandParser.java b/src/main/java/com/android/tools/r8/L8CommandParser.java -index 08021272e..6366029c0 100644 ---- a/src/main/java/com/android/tools/r8/L8CommandParser.java -+++ b/src/main/java/com/android/tools/r8/L8CommandParser.java -@@ -19,7 +19,7 @@ import java.util.Set; - public class L8CommandParser extends BaseCompilerCommandParser<L8Command, L8Command.Builder> { - - private static final Set<String> OPTIONS_WITH_PARAMETER = -- ImmutableSet.of("--output", "--lib", MIN_API_FLAG, "--desugared-lib", THREAD_COUNT_FLAG); -+ ImmutableSet.of("--output", "--lib", MIN_API_FLAG, "--desugared-lib", THREAD_COUNT_FLAG, "--pg-conf"); - - public static void main(String[] args) throws CompilationFailedException { - L8Command command = parse(args, Origin.root()).build(); -diff --git a/src/main/java/com/android/tools/r8/R8CommandParser.java b/src/main/java/com/android/tools/r8/R8CommandParser.java -index 8d286601c..41aa2ab2d 100644 ---- a/src/main/java/com/android/tools/r8/R8CommandParser.java -+++ b/src/main/java/com/android/tools/r8/R8CommandParser.java -@@ -3,6 +3,7 @@ - // BSD-style license that can be found in the LICENSE file. - package com.android.tools.r8; - -+import com.android.tools.r8.StringConsumer; - import com.android.tools.r8.origin.Origin; - import com.android.tools.r8.utils.AndroidApiLevel; - import com.android.tools.r8.utils.FlagFile; -@@ -29,6 +30,7 @@ public class R8CommandParser extends BaseCompilerCommandParser<R8Command, R8Comm - "--pg-conf", - "--pg-map-output", - "--desugared-lib", -+ "--desugared-library-keep-rule-output", - THREAD_COUNT_FLAG); - - public static void main(String[] args) throws CompilationFailedException { -@@ -85,7 +87,9 @@ public class R8CommandParser extends BaseCompilerCommandParser<R8Command, R8Comm - " # primary dex file.", - " --main-dex-list <file> # List of classes to place in the primary dex file.", - " --main-dex-list-output <file> ", -- " # Output the full main-dex list in <file>."), -+ " # Output the full main-dex list in <file>.", -+ " --desugared-library-keep-rule-output <file> # Output the desugared library", -+ " # keep rule to <file>."), - ASSERTIONS_USAGE_MESSAGE, - Arrays.asList( - " --version # Print the version of r8.", -@@ -237,6 +241,9 @@ public class R8CommandParser extends BaseCompilerCommandParser<R8Command, R8Comm - builder.addDesugaredLibraryConfiguration(StringResource.fromFile(Paths.get(nextArg))); - } else if (arg.equals("--no-data-resources")) { - state.includeDataResources = false; -+ } else if (arg.equals("--desugared-library-keep-rule-output")) { -+ StringConsumer consumer = new StringConsumer.FileConsumer(Paths.get(nextArg)); -+ builder.setDesugaredLibraryKeepRuleConsumer(consumer); - } else if (arg.startsWith("--")) { - if (!tryParseAssertionArgument(builder, arg, argsOrigin)) { - builder.error(new StringDiagnostic("Unknown option: " + arg, argsOrigin)); --- -2.26.2.761.g0e0b3e54be-goog - |