Simplify lenses using DefaultNonIdentityGraphLens
Bug: b/217665738
Change-Id: Idb1a26bf5f7bd8f079c7b0713d9ea8592f24f613
diff --git a/src/main/java/com/android/tools/r8/graph/lens/AppliedGraphLens.java b/src/main/java/com/android/tools/r8/graph/lens/AppliedGraphLens.java
index d5c02df..0e85802 100644
--- a/src/main/java/com/android/tools/r8/graph/lens/AppliedGraphLens.java
+++ b/src/main/java/com/android/tools/r8/graph/lens/AppliedGraphLens.java
@@ -32,7 +32,7 @@
*
* <p>The mappings from the original program to the generated program are kept, though.
*/
-public final class AppliedGraphLens extends NonIdentityGraphLens {
+public final class AppliedGraphLens extends DefaultNonIdentityGraphLens {
private final MutableBidirectionalManyToOneRepresentativeMap<DexType, DexType> renamedTypeNames =
BidirectionalManyToOneRepresentativeHashMap.newIdentityHashMap();
@@ -154,17 +154,6 @@
}
@Override
- protected FieldLookupResult internalDescribeLookupField(FieldLookupResult previous) {
- return previous;
- }
-
- @Override
- public MethodLookupResult internalDescribeLookupMethod(
- MethodLookupResult previous, DexMethod context) {
- return previous;
- }
-
- @Override
public DexMethod getPreviousMethodSignature(DexMethod method) {
if (extraOriginalMethodSignatures.containsKey(method)) {
return extraOriginalMethodSignatures.get(method);
diff --git a/src/main/java/com/android/tools/r8/graph/lens/ClearCodeRewritingGraphLens.java b/src/main/java/com/android/tools/r8/graph/lens/ClearCodeRewritingGraphLens.java
index 029ccdd..f63985a 100644
--- a/src/main/java/com/android/tools/r8/graph/lens/ClearCodeRewritingGraphLens.java
+++ b/src/main/java/com/android/tools/r8/graph/lens/ClearCodeRewritingGraphLens.java
@@ -8,34 +8,18 @@
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
import com.android.tools.r8.ir.code.InvokeType;
// This lens clears all code rewriting (lookup methods mimics identity lens behavior) but still
// relies on the previous lens for names (getRenamed/Original methods).
-public class ClearCodeRewritingGraphLens extends NonIdentityGraphLens {
+public class ClearCodeRewritingGraphLens extends DefaultNonIdentityGraphLens {
public ClearCodeRewritingGraphLens(DexItemFactory dexItemFactory, GraphLens previousLens) {
super(dexItemFactory, previousLens);
}
@Override
- public DexType getOriginalType(DexType type) {
- return getPrevious().getOriginalType(type);
- }
-
- @Override
- public Iterable<DexType> getOriginalTypes(DexType type) {
- return getPrevious().getOriginalTypes(type);
- }
-
- @Override
- public DexField getOriginalFieldSignature(DexField field) {
- return getPrevious().getOriginalFieldSignature(field);
- }
-
- @Override
public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
return this != codeLens ? getPrevious().getRenamedFieldSignature(originalField) : originalField;
}
@@ -59,11 +43,6 @@
}
@Override
- public final DexType internalDescribeLookupClassType(DexType previous) {
- return previous;
- }
-
- @Override
protected FieldLookupResult internalLookupField(
DexField reference, GraphLens codeLens, LookupFieldContinuation continuation) {
return getIdentityLens().internalLookupField(reference, codeLens, continuation);
@@ -93,16 +72,6 @@
}
@Override
- public DexMethod getPreviousMethodSignature(DexMethod method) {
- return method;
- }
-
- @Override
- public DexMethod getNextMethodSignature(DexMethod method) {
- return method;
- }
-
- @Override
public boolean isContextFreeForMethods() {
return getIdentityLens().isContextFreeForMethods();
}
diff --git a/src/main/java/com/android/tools/r8/optimize/FieldRebindingIdentityLens.java b/src/main/java/com/android/tools/r8/optimize/FieldRebindingIdentityLens.java
index 4e542e2..2e641f6 100644
--- a/src/main/java/com/android/tools/r8/optimize/FieldRebindingIdentityLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/FieldRebindingIdentityLens.java
@@ -6,13 +6,9 @@
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexItemFactory;
-import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.graph.lens.DefaultNonIdentityGraphLens;
import com.android.tools.r8.graph.lens.FieldLookupResult;
import com.android.tools.r8.graph.lens.GraphLens;
-import com.android.tools.r8.graph.lens.MethodLookupResult;
-import com.android.tools.r8.graph.lens.NonIdentityGraphLens;
-import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
import java.util.IdentityHashMap;
import java.util.Map;
@@ -22,7 +18,7 @@
*
* <p>TODO(b/157616970): All uses of this should be replaced by {@link MemberRebindingIdentityLens}.
*/
-public class FieldRebindingIdentityLens extends NonIdentityGraphLens {
+public class FieldRebindingIdentityLens extends DefaultNonIdentityGraphLens {
private final Map<DexField, DexField> nonReboundFieldReferenceToDefinitionMap;
@@ -57,69 +53,6 @@
return nonReboundFieldReferenceToDefinitionMap.getOrDefault(field, field);
}
- @Override
- public DexType getOriginalType(DexType type) {
- return getPrevious().getOriginalType(type);
- }
-
- @Override
- public Iterable<DexType> getOriginalTypes(DexType type) {
- return getPrevious().getOriginalTypes(type);
- }
-
- @Override
- public DexField getOriginalFieldSignature(DexField field) {
- return getPrevious().getOriginalFieldSignature(field);
- }
-
- @Override
- public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
- if (this == codeLens) {
- return originalField;
- }
- return getPrevious().getRenamedFieldSignature(originalField);
- }
-
- @Override
- public DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLens applied) {
- return getPrevious().getRenamedMethodSignature(originalMethod, applied);
- }
-
- @Override
- public final DexType internalDescribeLookupClassType(DexType previous) {
- return previous;
- }
-
- @Override
- public MethodLookupResult internalDescribeLookupMethod(
- MethodLookupResult previous, DexMethod context) {
- return previous;
- }
-
- @Override
- public DexMethod getPreviousMethodSignature(DexMethod method) {
- return method;
- }
-
- @Override
- public DexMethod getNextMethodSignature(DexMethod method) {
- return method;
- }
-
- @Override
- public RewrittenPrototypeDescription lookupPrototypeChangesForMethodDefinition(
- DexMethod method, GraphLens codeLens) {
- if (this == codeLens) {
- return getIdentityLens().lookupPrototypeChangesForMethodDefinition(method, codeLens);
- }
- return getPrevious().lookupPrototypeChangesForMethodDefinition(method, codeLens);
- }
-
- @Override
- public boolean isContextFreeForMethods() {
- return getPrevious().isContextFreeForMethods();
- }
-
public static class Builder {
private final Map<DexField, DexField> nonReboundFieldReferenceToDefinitionMap =
diff --git a/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLens.java b/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLens.java
index 6f99cd5..0c6a75a 100644
--- a/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLens.java
@@ -10,14 +10,13 @@
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.FieldAccessInfo;
import com.android.tools.r8.graph.MethodResolutionResult.SingleResolutionResult;
+import com.android.tools.r8.graph.lens.DefaultNonIdentityGraphLens;
import com.android.tools.r8.graph.lens.FieldLookupResult;
import com.android.tools.r8.graph.lens.GraphLens;
import com.android.tools.r8.graph.lens.MethodLookupResult;
import com.android.tools.r8.graph.lens.NonIdentityGraphLens;
-import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
import java.util.IdentityHashMap;
import java.util.Map;
@@ -26,7 +25,7 @@
* both the non-rebound and rebound field and method references are available to all descendants of
* this lens.
*/
-public class MemberRebindingIdentityLens extends NonIdentityGraphLens {
+public class MemberRebindingIdentityLens extends DefaultNonIdentityGraphLens {
private final Map<DexField, DexField> nonReboundFieldReferenceToDefinitionMap;
private final Map<DexMethod, DexMethod> nonReboundMethodReferenceToDefinitionMap;
@@ -98,66 +97,6 @@
}
@Override
- public DexType getOriginalType(DexType type) {
- return getPrevious().getOriginalType(type);
- }
-
- @Override
- public Iterable<DexType> getOriginalTypes(DexType type) {
- return getPrevious().getOriginalTypes(type);
- }
-
- @Override
- public DexField getOriginalFieldSignature(DexField field) {
- return getPrevious().getOriginalFieldSignature(field);
- }
-
- @Override
- public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
- if (this == codeLens) {
- return originalField;
- }
- return getPrevious().getRenamedFieldSignature(originalField);
- }
-
- @Override
- public DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLens applied) {
- if (this == applied) {
- return originalMethod;
- }
- return getPrevious().getRenamedMethodSignature(originalMethod, applied);
- }
-
- @Override
- public final DexType internalDescribeLookupClassType(DexType previous) {
- return previous;
- }
-
- @Override
- public DexMethod getPreviousMethodSignature(DexMethod method) {
- return method;
- }
-
- @Override
- public DexMethod getNextMethodSignature(DexMethod method) {
- return method;
- }
-
- @Override
- public RewrittenPrototypeDescription lookupPrototypeChangesForMethodDefinition(
- DexMethod method, GraphLens codeLens) {
- if (this == codeLens) {
- return getIdentityLens().lookupPrototypeChangesForMethodDefinition(method, codeLens);
- }
- return getPrevious().lookupPrototypeChangesForMethodDefinition(method, codeLens);
- }
-
- @Override
- public boolean isContextFreeForMethods() {
- return getPrevious().isContextFreeForMethods();
- }
-
- @Override
public boolean isMemberRebindingIdentityLens() {
return true;
}
diff --git a/src/main/java/com/android/tools/r8/optimize/MemberRebindingLens.java b/src/main/java/com/android/tools/r8/optimize/MemberRebindingLens.java
index 247940f..21796c5 100644
--- a/src/main/java/com/android/tools/r8/optimize/MemberRebindingLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/MemberRebindingLens.java
@@ -11,20 +11,19 @@
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.FieldAccessInfo;
+import com.android.tools.r8.graph.lens.DefaultNonIdentityGraphLens;
import com.android.tools.r8.graph.lens.FieldLookupResult;
import com.android.tools.r8.graph.lens.GraphLens;
import com.android.tools.r8.graph.lens.MethodLookupResult;
import com.android.tools.r8.graph.lens.NonIdentityGraphLens;
-import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
import com.android.tools.r8.ir.code.InvokeType;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
import java.util.Collections;
import java.util.IdentityHashMap;
import java.util.Map;
-public class MemberRebindingLens extends NonIdentityGraphLens {
+public class MemberRebindingLens extends DefaultNonIdentityGraphLens {
private final AppView<AppInfoWithLiveness> appView;
private final Map<InvokeType, Map<DexMethod, DexMethod>> methodMaps;
@@ -55,55 +54,6 @@
}
@Override
- public DexType getOriginalType(DexType type) {
- return getPrevious().getOriginalType(type);
- }
-
- @Override
- public Iterable<DexType> getOriginalTypes(DexType type) {
- return getPrevious().getOriginalTypes(type);
- }
-
- @Override
- public DexField getOriginalFieldSignature(DexField field) {
- return getPrevious().getOriginalFieldSignature(field);
- }
-
- @Override
- public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
- if (this == codeLens) {
- return originalField;
- }
- return getPrevious().getRenamedFieldSignature(originalField);
- }
-
- @Override
- public DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLens applied) {
- return this != applied
- ? getPrevious().getRenamedMethodSignature(originalMethod, applied)
- : originalMethod;
- }
-
- @Override
- public RewrittenPrototypeDescription lookupPrototypeChangesForMethodDefinition(
- DexMethod method, GraphLens codeLens) {
- if (this == codeLens) {
- return getIdentityLens().lookupPrototypeChangesForMethodDefinition(method, codeLens);
- }
- return getPrevious().lookupPrototypeChangesForMethodDefinition(method, codeLens);
- }
-
- @Override
- public boolean isContextFreeForMethods() {
- return getPrevious().isContextFreeForMethods();
- }
-
- @Override
- protected DexType internalDescribeLookupClassType(DexType previous) {
- return previous;
- }
-
- @Override
protected FieldLookupResult internalDescribeLookupField(FieldLookupResult previous) {
assert !previous.hasReadCastType();
assert !previous.hasReboundReference();
@@ -135,16 +85,6 @@
.build();
}
- @Override
- public DexMethod getPreviousMethodSignature(DexMethod method) {
- return method;
- }
-
- @Override
- public DexMethod getNextMethodSignature(DexMethod method) {
- return method;
- }
-
public FieldRebindingIdentityLens toRewrittenFieldRebindingLens(
AppView<? extends AppInfoWithClassHierarchy> appView,
GraphLens lens,
diff --git a/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoistingLens.java b/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoistingLens.java
index 2c3af38..69f9248 100644
--- a/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoistingLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoistingLens.java
@@ -5,18 +5,13 @@
package com.android.tools.r8.optimize.bridgehoisting;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.lens.FieldLookupResult;
+import com.android.tools.r8.graph.lens.DefaultNonIdentityGraphLens;
import com.android.tools.r8.graph.lens.GraphLens;
-import com.android.tools.r8.graph.lens.MethodLookupResult;
-import com.android.tools.r8.graph.lens.NonIdentityGraphLens;
-import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
import com.android.tools.r8.utils.collections.BidirectionalManyToOneMap;
import java.util.Set;
-class BridgeHoistingLens extends NonIdentityGraphLens {
+class BridgeHoistingLens extends DefaultNonIdentityGraphLens {
// Mapping from non-hoisted bridge methods to hoisted bridge methods.
private final BidirectionalManyToOneMap<DexMethod, DexMethod> bridgeToHoistedBridgeMap;
@@ -46,60 +41,7 @@
}
@Override
- public DexType getOriginalType(DexType type) {
- return getPrevious().getOriginalType(type);
- }
-
- @Override
- public Iterable<DexType> getOriginalTypes(DexType type) {
- return getPrevious().getOriginalTypes(type);
- }
-
- @Override
- public DexField getOriginalFieldSignature(DexField field) {
- return getPrevious().getOriginalFieldSignature(field);
- }
-
- @Override
- public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
- if (this == codeLens) {
- return originalField;
- }
- return getPrevious().getRenamedFieldSignature(originalField);
- }
-
- @Override
- public RewrittenPrototypeDescription lookupPrototypeChangesForMethodDefinition(
- DexMethod method, GraphLens codeLens) {
- if (this == codeLens) {
- return getIdentityLens().lookupPrototypeChangesForMethodDefinition(method, codeLens);
- }
- return getPrevious().lookupPrototypeChangesForMethodDefinition(method, codeLens);
- }
-
- @Override
- public boolean isContextFreeForMethods() {
- return getPrevious().isContextFreeForMethods();
- }
-
- @Override
public boolean hasCodeRewritings() {
return getPrevious().hasCodeRewritings();
}
-
- @Override
- protected FieldLookupResult internalDescribeLookupField(FieldLookupResult previous) {
- return previous;
- }
-
- @Override
- protected MethodLookupResult internalDescribeLookupMethod(
- MethodLookupResult previous, DexMethod context) {
- return previous;
- }
-
- @Override
- protected DexType internalDescribeLookupClassType(DexType previous) {
- return previous;
- }
}
diff --git a/src/main/java/com/android/tools/r8/optimize/redundantbridgeremoval/RedundantBridgeRemovalLens.java b/src/main/java/com/android/tools/r8/optimize/redundantbridgeremoval/RedundantBridgeRemovalLens.java
index f7fc31e..427b37e 100644
--- a/src/main/java/com/android/tools/r8/optimize/redundantbridgeremoval/RedundantBridgeRemovalLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/redundantbridgeremoval/RedundantBridgeRemovalLens.java
@@ -6,22 +6,19 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClassAndMethod;
-import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.ProgramMethod;
-import com.android.tools.r8.graph.lens.FieldLookupResult;
+import com.android.tools.r8.graph.lens.DefaultNonIdentityGraphLens;
import com.android.tools.r8.graph.lens.GraphLens;
import com.android.tools.r8.graph.lens.MethodLookupResult;
-import com.android.tools.r8.graph.lens.NonIdentityGraphLens;
-import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
import com.android.tools.r8.ir.code.InvokeType;
import com.google.common.collect.Sets;
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.Set;
-public class RedundantBridgeRemovalLens extends NonIdentityGraphLens {
+public class RedundantBridgeRemovalLens extends DefaultNonIdentityGraphLens {
private final Set<DexType> interfaces;
private final Map<DexMethod, DexMethod> methodMap;
@@ -33,26 +30,6 @@
this.methodMap = methodMap;
}
- // Fields.
-
- @Override
- public DexField getOriginalFieldSignature(DexField field) {
- return getPrevious().getOriginalFieldSignature(field);
- }
-
- @Override
- public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
- if (this == codeLens) {
- return originalField;
- }
- return getPrevious().getRenamedFieldSignature(originalField, codeLens);
- }
-
- @Override
- protected FieldLookupResult internalDescribeLookupField(FieldLookupResult previous) {
- return previous;
- }
-
// Methods.
@Override
@@ -66,16 +43,6 @@
}
@Override
- public DexMethod getNextMethodSignature(DexMethod method) {
- return method;
- }
-
- @Override
- public DexMethod getPreviousMethodSignature(DexMethod method) {
- return method;
- }
-
- @Override
protected MethodLookupResult internalDescribeLookupMethod(
MethodLookupResult previous, DexMethod context) {
if (methodMap.containsKey(previous.getReference())) {
@@ -100,39 +67,6 @@
return previous;
}
- @Override
- public RewrittenPrototypeDescription lookupPrototypeChangesForMethodDefinition(
- DexMethod method, GraphLens codeLens) {
- if (this == codeLens) {
- return RewrittenPrototypeDescription.none();
- }
- return getPrevious().lookupPrototypeChangesForMethodDefinition(method, codeLens);
- }
-
- // Types.
-
- @Override
- public DexType getOriginalType(DexType type) {
- return getPrevious().getOriginalType(type);
- }
-
- @Override
- public Iterable<DexType> getOriginalTypes(DexType type) {
- return getPrevious().getOriginalTypes(type);
- }
-
- @Override
- protected DexType internalDescribeLookupClassType(DexType previous) {
- return previous;
- }
-
- // Misc.
-
- @Override
- public boolean isContextFreeForMethods() {
- return getPrevious().isContextFreeForMethods();
- }
-
public static class Builder {
private final Set<DexType> interfaces = Sets.newIdentityHashSet();