Run -identifiernamestring marker in parallel.
Marking const-string in method is already run in parallel.
This one is parallelizing marking const-string in fields.
Change-Id: I2ded0b693e0a524adc14268e23bc30399ab8ec45
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 32b7cbe..e28aa62 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -766,7 +766,7 @@
clearDexMethodCompilationState();
if (identifierNameStringMarker != null) {
- identifierNameStringMarker.decoupleIdentifierNameStringsInFields();
+ identifierNameStringMarker.decoupleIdentifierNameStringsInFields(executorService);
}
if (Log.ENABLED) {
diff --git a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
index 75d1037..de60241 100644
--- a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
+++ b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
@@ -15,7 +15,6 @@
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexProgramClass;
import com.android.tools.r8.graph.DexReference;
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.DexType;
@@ -40,6 +39,7 @@
import com.android.tools.r8.position.TextPosition;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
import com.android.tools.r8.utils.StringDiagnostic;
+import com.android.tools.r8.utils.ThreadUtils;
import com.google.common.collect.Streams;
import it.unimi.dsi.fastutil.objects.Object2BooleanMap;
import java.util.Arrays;
@@ -47,6 +47,8 @@
import java.util.ListIterator;
import java.util.Objects;
import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
public class IdentifierNameStringMarker {
@@ -61,12 +63,17 @@
this.throwingInfo = ThrowingInfo.defaultForConstString(appView.options());
}
- public void decoupleIdentifierNameStringsInFields() {
- for (DexProgramClass clazz : appView.appInfo().classes()) {
- for (DexEncodedField field : clazz.staticFields()) {
- decoupleIdentifierNameStringInStaticField(field);
- }
- }
+ public void decoupleIdentifierNameStringsInFields(
+ ExecutorService executorService) throws ExecutionException {
+ ThreadUtils.processItems(
+ appView.appInfo().classes(),
+ clazz -> {
+ for (DexEncodedField field : clazz.staticFields()) {
+ decoupleIdentifierNameStringInStaticField(field);
+ }
+ },
+ executorService
+ );
}
private void decoupleIdentifierNameStringInStaticField(DexEncodedField encodedField) {