Revert "Remove KeyType from InternalState"
This reverts commit cd3c73f10816e339e53d9dc79483638c580deb7b.
Reason for revert: Failing
Change-Id: I41745b3ee684687d5e43650f83a71363970695e7
diff --git a/src/main/java/com/android/tools/r8/naming/MethodNamingState.java b/src/main/java/com/android/tools/r8/naming/MethodNamingState.java
index c49957f..b691a5a 100644
--- a/src/main/java/com/android/tools/r8/naming/MethodNamingState.java
+++ b/src/main/java/com/android/tools/r8/naming/MethodNamingState.java
@@ -12,11 +12,14 @@
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.utils.StringUtils;
+import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Sets;
+import com.google.common.collect.Table;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import java.util.function.Function;
@@ -72,7 +75,7 @@
if (state == null) {
return null;
}
- return state.getAssignedNameFor(name);
+ return state.getAssignedNameFor(name, key);
}
public DexString assignNewNameFor(DexMethod source, DexString original, DexProto proto) {
@@ -112,7 +115,7 @@
public void addRenaming(DexString original, DexProto proto, DexString newName) {
KeyType key = keyTransform.apply(proto);
InternalState state = getOrCreateInternalStateFor(key);
- state.addRenaming(original, newName);
+ state.addRenaming(original, key, newName);
}
void printState(
@@ -145,9 +148,9 @@
protected final DexItemFactory itemFactory;
private final InternalState parentInternalState;
private Set<DexString> reservedNames = null;
- private Map<DexString, DexString> renamings = null;
- private int publicNameCount;
- private int privateNameCount = 0;
+ private Table<DexString, KeyType, DexString> renamings = null;
+ private int virtualNameCount;
+ private int directNameCount = 0;
private final Iterator<String> dictionaryIterator;
private InternalState(
@@ -207,13 +210,13 @@
}
}
- DexString getAssignedNameFor(DexString original) {
+ DexString getAssignedNameFor(DexString original, KeyType proto) {
DexString result = null;
if (renamings != null) {
- result = renamings.get(original);
+ result = renamings.get(original, proto);
}
if (result == null && parentInternalState != null) {
- result = parentInternalState.getAssignedNameFor(original);
+ result = parentInternalState.getAssignedNameFor(original, proto);
}
return result;
}
@@ -226,11 +229,11 @@
return name;
}
- void addRenaming(DexString original, DexString newName) {
+ void addRenaming(DexString original, KeyType proto, DexString newName) {
if (renamings == null) {
- renamings = new HashMap<>();
+ renamings = HashBasedTable.create();
}
- renamings.put(original, newName);
+ renamings.put(original, proto, newName);
}
DexString nextSuggestedName(DexMethod source) {
@@ -304,13 +307,17 @@
if (renamings == null || renamings.isEmpty()) {
out.print(" <NO RENAMINGS>");
} else {
- for (DexString original : renamings.keySet()) {
- out.print(System.lineSeparator());
- out.print(indentation);
- out.print(" ");
- out.print(original.toSourceString());
- out.print(" -> ");
- out.print(renamings.get(original).toSourceString());
+ for (DexString original : renamings.rowKeySet()) {
+ Map<KeyType, DexString> row = renamings.row(original);
+ for (Entry<KeyType, DexString> entry : row.entrySet()) {
+ out.print(System.lineSeparator());
+ out.print(indentation);
+ out.print(" ");
+ out.print(original.toSourceString());
+ out.print(entry.getKey().toString());
+ out.print(" -> ");
+ out.print(entry.getValue().toSourceString());
+ }
}
}
out.println();