forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Fixes optimization bug (see linked bug) * Introduces enum simplification * Adds command-line support for L8 optimizations Bug: 1077307 Change-Id: I85e4bba61253c9056d4544cbd849ec0d9bcd97a4 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2210792 Reviewed-by: Andrew Grieve <agrieve@chromium.org> Commit-Queue: Sam Maier <smaier@chromium.org> Cr-Commit-Position: refs/heads/master@{#771030}
- Loading branch information
Sam Maier
authored and
Commit Bot
committed
May 21, 2020
1 parent
218f707
commit baa502f
Showing
12 changed files
with
127 additions
and
55 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
25 changes: 11 additions & 14 deletions
25
third_party/r8/patches/0005-Fix-up-proguard-keeps-for-Chrome.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,26 @@ | ||
From fe0cf2feb23d4cdcf4dc287bddba9ea07538aa35 Mon Sep 17 00:00:00 2001 | ||
From: Andrew Grieve <agrieve@chromium.org> | ||
Date: Wed, 1 Apr 2020 10:06:57 -0400 | ||
Subject: [PATCH 5/5] Fix up proguard keeps for Chrome | ||
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 | 8 +++++++- | ||
1 file changed, 7 insertions(+), 1 deletion(-) | ||
src/main/keep.txt | 6 ++++++ | ||
1 file changed, 6 insertions(+) | ||
|
||
diff --git a/src/main/keep.txt b/src/main/keep.txt | ||
index b0c58c916..5e4405175 100644 | ||
index 7791d4e88..182ea9d37 100644 | ||
--- a/src/main/keep.txt | ||
+++ b/src/main/keep.txt | ||
@@ -27,4 +27,10 @@ | ||
-keep public class com.android.tools.r8.compatproguard.CompatProguard { public static void main(java.lang.String[]); } | ||
@@ -23,3 +23,9 @@ | ||
|
||
# Compatibility command line program used by in google3. | ||
--keep public class com.android.tools.r8.compatdx.CompatDx { public static void main(java.lang.String[]); } | ||
\ No newline at end of file | ||
+-keep public class com.android.tools.r8.compatdx.CompatDx { public static void main(java.lang.String[]); } | ||
# 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.0.rc2.310.g2932bb562d-goog | ||
2.26.2.761.g0e0b3e54be-goog | ||
|
69 changes: 69 additions & 0 deletions
69
third_party/r8/patches/0006-Add-desugared-library-keep-rule-output-to-R8-command.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
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 | ||
|