summaryrefslogtreecommitdiff
path: root/chromium/third_party/r8
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/third_party/r8
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/third_party/r8')
-rw-r--r--chromium/third_party/r8/OWNERS1
-rw-r--r--chromium/third_party/r8/README.chromium14
-rw-r--r--chromium/third_party/r8/patches/0001-Chrome-Change-meaning-of-file-per-class.patch29
-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.patch64
-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.patch30
-rw-r--r--chromium/third_party/r8/patches/0005-Fix-up-proguard-keeps-for-Chrome.patch26
-rw-r--r--chromium/third_party/r8/patches/0006-Add-desugared-library-keep-rule-output-to-R8-command.patch69
9 files changed, 48 insertions, 205 deletions
diff --git a/chromium/third_party/r8/OWNERS b/chromium/third_party/r8/OWNERS
index f74dffc01cf..32959ebc3cc 100644
--- a/chromium/third_party/r8/OWNERS
+++ b/chromium/third_party/r8/OWNERS
@@ -1,4 +1,5 @@
smaier@chromium.org
agrieve@chromium.org
+# TEAM: build@chromium.org
# COMPONENT: Build
diff --git a/chromium/third_party/r8/README.chromium b/chromium/third_party/r8/README.chromium
index bf65af246e4..46a6963d2a6 100644
--- a/chromium/third_party/r8/README.chromium
+++ b/chromium/third_party/r8/README.chromium
@@ -1,7 +1,7 @@
Name: R8
URL: https://r8.googlesource.com/r8
Revision: 924f28bdb1f32b7504d6813ee911ba1949be6130
-Version: 2.1.26-dev
+Version: 2.2.1-dev
License: BSD 3-Clause
License File: NOT_SHIPPED
Security Critical: no
@@ -18,7 +18,6 @@ desugar_jdk_libs.json
R8 is a proguard-like optimizer that also has the ability to dex.
Local Modifications:
-* Cherry-picked R8 commit: b8464335ec1e587bde88d7a12c90d59531be10de
* Refer to commit descriptions within "patches" directory.
* Added "playground" directory for quick "how does this optimize" tests.
@@ -27,7 +26,7 @@ Update Instructions:
git clone https://r8.googlesource.com/r8
cd r8
# Apply patches:
-git am $CHROMIUM_SRC/third_party/r8/patches *.patch
+git am $CHROMIUM_SRC/third_party/r8/patches/*.patch
# Build:
tools/gradle.py r8
# Shrink (improves r8/d8 launch time):
@@ -41,14 +40,15 @@ cp r8.jar $CHROMIUM_SRC/third_party/r8/lib/r8.jar
# different amount of patches:
git format-patch -6 -o $CHROMIUM_SRC/third_party/r8/patches
-# Upload to CIPD:
-cipd create --pkg-def cipd.yaml # Make note of the instance ID
-
# Copy over desugar config:
cp src/library_desugar/desugar_jdk_libs.json $CHROMIUM_SRC/third_party/r8
+# Upload to CIPD:
+cd $CHROMIUM_SRC/third_party/r8
+cipd create --pkg-def cipd.yaml # Make note of the instance ID
+
# Manually update:
-* README.chromium (version number via "java -jar lib/r8.jar --version")
+* README.chromium (version number via "java -cp lib/r8.jar com.android.tools.r8.R8 --version")
* //DEPS (instance ID output by cipd create)
# To create a new patch:
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
-