Remove AppInfoWithSubtyping.
Bug: 139464956
Change-Id: Ie59c3476315834593b601271edefb63a8bb4ef2b
diff --git a/src/main/java/com/android/tools/r8/GenerateMainDexList.java b/src/main/java/com/android/tools/r8/GenerateMainDexList.java
index a647cf5..0bb17c7 100644
--- a/src/main/java/com/android/tools/r8/GenerateMainDexList.java
+++ b/src/main/java/com/android/tools/r8/GenerateMainDexList.java
@@ -7,7 +7,7 @@
import com.android.tools.r8.dex.ApplicationReader;
import com.android.tools.r8.experimental.graphinfo.GraphConsumer;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppServices;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
@@ -48,8 +48,8 @@
try {
DirectMappedDexApplication application =
new ApplicationReader(app, options, timing).read(executor).toDirect();
- AppView<? extends AppInfoWithSubtyping> appView =
- AppView.createForR8(new AppInfoWithSubtyping(application), options);
+ AppView<? extends AppInfoWithClassHierarchy> appView =
+ AppView.createForR8(new AppInfoWithClassHierarchy(application), options);
appView.setAppServices(AppServices.builder(appView).build());
MainDexListBuilder.checkForAssumedLibraryTypes(appView.appInfo());
diff --git a/src/main/java/com/android/tools/r8/PrintSeeds.java b/src/main/java/com/android/tools/r8/PrintSeeds.java
index 41c399f..fb4edb5 100644
--- a/src/main/java/com/android/tools/r8/PrintSeeds.java
+++ b/src/main/java/com/android/tools/r8/PrintSeeds.java
@@ -6,7 +6,7 @@
import static com.android.tools.r8.utils.ExceptionUtils.unwrapExecutionException;
import com.android.tools.r8.dex.ApplicationReader;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppServices;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DirectMappedDexApplication;
@@ -86,8 +86,8 @@
try {
DirectMappedDexApplication application =
new ApplicationReader(command.getInputApp(), options, timing).read(executor).toDirect();
- AppView<? extends AppInfoWithSubtyping> appView =
- AppView.createForR8(new AppInfoWithSubtyping(application), options);
+ AppView<? extends AppInfoWithClassHierarchy> appView =
+ AppView.createForR8(new AppInfoWithClassHierarchy(application), options);
appView.setAppServices(AppServices.builder(appView).build());
RootSet rootSet =
new RootSetBuilder(appView, application, options.getProguardConfiguration().getRules())
diff --git a/src/main/java/com/android/tools/r8/PrintUses.java b/src/main/java/com/android/tools/r8/PrintUses.java
index 51b6ed7..0b4f28b 100644
--- a/src/main/java/com/android/tools/r8/PrintUses.java
+++ b/src/main/java/com/android/tools/r8/PrintUses.java
@@ -4,7 +4,7 @@
package com.android.tools.r8;
import com.android.tools.r8.dex.ApplicationReader;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.DexAnnotation;
import com.android.tools.r8.graph.DexApplication;
import com.android.tools.r8.graph.DexCallSite;
@@ -74,7 +74,7 @@
private Set<DexType> noObfuscationTypes = Sets.newIdentityHashSet();
private Set<String> keepPackageNames = Sets.newHashSet();
private final DirectMappedDexApplication application;
- private final AppInfoWithSubtyping appInfo;
+ private final AppInfoWithClassHierarchy appInfo;
private int errors;
class UseCollector extends UseRegistry {
@@ -355,7 +355,7 @@
InternalOptions options = new InternalOptions();
application =
new ApplicationReader(inputApp, options, new Timing("PrintUses")).read().toDirect();
- appInfo = new AppInfoWithSubtyping(application);
+ appInfo = new AppInfoWithClassHierarchy(application);
}
private void analyze() {
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index c7f2ad9..b03172f 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -12,7 +12,7 @@
import com.android.tools.r8.dex.Marker.Tool;
import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.experimental.graphinfo.GraphConsumer;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppServices;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.AppliedGraphLens;
@@ -273,8 +273,8 @@
// Now that the dex-application is fully loaded, close any internal archive providers.
inputApp.closeInternalArchiveProviders();
- AppView<AppInfoWithSubtyping> appView =
- AppView.createForR8(new AppInfoWithSubtyping(application), options);
+ AppView<AppInfoWithClassHierarchy> appView =
+ AppView.createForR8(new AppInfoWithClassHierarchy(application), options);
appView.setAppServices(AppServices.builder(appView).build());
// Up-front check for valid library setup.
@@ -597,7 +597,7 @@
appViewWithLiveness.appInfo().getEnumValueInfoMapCollection();
if (!options.mainDexKeepRules.isEmpty()) {
- appView.setAppInfo(new AppInfoWithSubtyping(application));
+ appView.setAppInfo(new AppInfoWithClassHierarchy(application));
// No need to build a new main dex root set
assert mainDexRootSet != null;
GraphConsumer mainDexKeptGraphConsumer = options.mainDexKeptGraphConsumer;
@@ -641,7 +641,7 @@
executorService);
}
- appView.setAppInfo(new AppInfoWithSubtyping(application));
+ appView.setAppInfo(new AppInfoWithClassHierarchy(application));
if (options.shouldRerunEnqueuer()) {
timing.begin("Post optimization code stripping");
@@ -866,7 +866,7 @@
private AppView<AppInfoWithLiveness> runEnqueuer(
AnnotationRemover.Builder annotationRemoverBuilder,
ExecutorService executorService,
- AppView<AppInfoWithSubtyping> appView)
+ AppView<AppInfoWithClassHierarchy> appView)
throws ExecutionException {
Enqueuer enqueuer = EnqueuerFactory.createForInitialTreeShaking(appView);
enqueuer.setAnnotationRemoverBuilder(annotationRemoverBuilder);
@@ -900,7 +900,7 @@
RootSet rootSet,
Supplier<Iterable<DexProgramClass>> classes,
WhyAreYouKeepingConsumer whyAreYouKeepingConsumer,
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
Enqueuer enqueuer,
boolean forMainDex,
InternalOptions options,
diff --git a/src/main/java/com/android/tools/r8/graph/AccessControl.java b/src/main/java/com/android/tools/r8/graph/AccessControl.java
index d775cb3..0f219bd 100644
--- a/src/main/java/com/android/tools/r8/graph/AccessControl.java
+++ b/src/main/java/com/android/tools/r8/graph/AccessControl.java
@@ -30,7 +30,7 @@
DexEncodedField field,
DexClass holder,
DexProgramClass context,
- AppInfoWithSubtyping appInfo) {
+ AppInfoWithClassHierarchy appInfo) {
return isMemberAccessible(field.accessFlags, holder, context, appInfo);
}
diff --git a/src/main/java/com/android/tools/r8/graph/AppInfo.java b/src/main/java/com/android/tools/r8/graph/AppInfo.java
index 8b63cbf..ef53aaa 100644
--- a/src/main/java/com/android/tools/r8/graph/AppInfo.java
+++ b/src/main/java/com/android/tools/r8/graph/AppInfo.java
@@ -578,16 +578,6 @@
return null;
}
- public boolean hasSubtyping() {
- assert checkIfObsolete();
- return false;
- }
-
- public AppInfoWithSubtyping withSubtyping() {
- assert checkIfObsolete();
- return null;
- }
-
public boolean hasLiveness() {
assert checkIfObsolete();
return false;
diff --git a/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java b/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
deleted file mode 100644
index 794745f..0000000
--- a/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.graph;
-
-import java.util.Collection;
-
-public class AppInfoWithSubtyping extends AppInfoWithClassHierarchy {
-
- public AppInfoWithSubtyping(DirectMappedDexApplication application) {
- this(application, application.allClasses());
- }
-
- public AppInfoWithSubtyping(
- DirectMappedDexApplication application, Collection<DexClass> classes) {
- super(application);
- }
-
- protected AppInfoWithSubtyping(AppInfoWithSubtyping previous) {
- super(previous);
- assert app() instanceof DirectMappedDexApplication;
- }
-
- private DirectMappedDexApplication getDirectApplication() {
- // TODO(herhut): Remove need for cast.
- return (DirectMappedDexApplication) app();
- }
-
- public Iterable<DexLibraryClass> libraryClasses() {
- assert checkIfObsolete();
- return getDirectApplication().libraryClasses();
- }
-
- @Override
- public boolean hasSubtyping() {
- assert checkIfObsolete();
- return true;
- }
-
- @Override
- public AppInfoWithSubtyping withSubtyping() {
- assert checkIfObsolete();
- return this;
- }
-}
diff --git a/src/main/java/com/android/tools/r8/graph/AppView.java b/src/main/java/com/android/tools/r8/graph/AppView.java
index d3f59bd..2eb151e 100644
--- a/src/main/java/com/android/tools/r8/graph/AppView.java
+++ b/src/main/java/com/android/tools/r8/graph/AppView.java
@@ -423,13 +423,6 @@
: null;
}
- @SuppressWarnings("unchecked")
- public AppView<AppInfoWithSubtyping> withSubtyping() {
- return appInfo.hasSubtyping()
- ? (AppView<AppInfoWithSubtyping>) this
- : null;
- }
-
public AppView<AppInfoWithLiveness> withLiveness() {
@SuppressWarnings("unchecked")
AppView<AppInfoWithLiveness> appViewWithLiveness = (AppView<AppInfoWithLiveness>) this;
@@ -438,7 +431,7 @@
public OptionalBool isSubtype(DexType subtype, DexType supertype) {
return appInfo().hasLiveness()
- ? OptionalBool.of(appInfo().withSubtyping().isSubtype(subtype, supertype))
+ ? OptionalBool.of(appInfo().withLiveness().isSubtype(subtype, supertype))
: OptionalBool.unknown();
}
}
diff --git a/src/main/java/com/android/tools/r8/graph/AppliedGraphLens.java b/src/main/java/com/android/tools/r8/graph/AppliedGraphLens.java
index a05883a..158bf1f 100644
--- a/src/main/java/com/android/tools/r8/graph/AppliedGraphLens.java
+++ b/src/main/java/com/android/tools/r8/graph/AppliedGraphLens.java
@@ -28,7 +28,7 @@
new IdentityHashMap<>();
public AppliedGraphLens(
- AppView<? extends AppInfoWithSubtyping> appView, Iterable<DexProgramClass> classes) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, Iterable<DexProgramClass> classes) {
this.appView = appView;
for (DexProgramClass clazz : classes) {
diff --git a/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java b/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
index 968b1c9..37b1460 100644
--- a/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
+++ b/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
@@ -28,7 +28,7 @@
private final boolean writeFields;
private final boolean writeAnnotations;
private final boolean writeIR;
- private final AppInfoWithSubtyping appInfo;
+ private final AppInfoWithClassHierarchy appInfo;
private final Kotlin kotlin;
private final Timing timing = new Timing("AssemblyWriter");
@@ -40,7 +40,7 @@
this.writeAnnotations = allInfo;
this.writeIR = writeIR;
if (writeIR) {
- this.appInfo = new AppInfoWithSubtyping(application.toDirect());
+ this.appInfo = new AppInfoWithClassHierarchy(application.toDirect());
if (options.programConsumer == null) {
// Use class-file backend, since the CF frontend for testing does not support desugaring of
// synchronized methods for the DEX backend (b/109789541).
diff --git a/src/main/java/com/android/tools/r8/graph/BottomUpClassHierarchyTraversal.java b/src/main/java/com/android/tools/r8/graph/BottomUpClassHierarchyTraversal.java
index 9cdac51..1c7bf88 100644
--- a/src/main/java/com/android/tools/r8/graph/BottomUpClassHierarchyTraversal.java
+++ b/src/main/java/com/android/tools/r8/graph/BottomUpClassHierarchyTraversal.java
@@ -10,7 +10,9 @@
private final SubtypingInfo subtypingInfo;
private BottomUpClassHierarchyTraversal(
- AppView<? extends AppInfoWithSubtyping> appView, SubtypingInfo subtypingInfo, Scope scope) {
+ AppView<? extends AppInfoWithClassHierarchy> appView,
+ SubtypingInfo subtypingInfo,
+ Scope scope) {
super(appView, scope);
this.subtypingInfo = subtypingInfo;
}
@@ -20,7 +22,7 @@
* classes) that are reachable from a given set of sources.
*/
public static BottomUpClassHierarchyTraversal<DexClass> forAllClasses(
- AppView<? extends AppInfoWithSubtyping> appView, SubtypingInfo subtypingInfo) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, SubtypingInfo subtypingInfo) {
return new BottomUpClassHierarchyTraversal<>(appView, subtypingInfo, Scope.ALL_CLASSES);
}
@@ -29,7 +31,7 @@
* given set of sources.
*/
public static BottomUpClassHierarchyTraversal<DexProgramClass> forProgramClasses(
- AppView<? extends AppInfoWithSubtyping> appView, SubtypingInfo subtypingInfo) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, SubtypingInfo subtypingInfo) {
return new BottomUpClassHierarchyTraversal<>(
appView, subtypingInfo, Scope.ONLY_PROGRAM_CLASSES);
}
diff --git a/src/main/java/com/android/tools/r8/graph/ClassHierarchyTraversal.java b/src/main/java/com/android/tools/r8/graph/ClassHierarchyTraversal.java
index 550a96c..83b09c3 100644
--- a/src/main/java/com/android/tools/r8/graph/ClassHierarchyTraversal.java
+++ b/src/main/java/com/android/tools/r8/graph/ClassHierarchyTraversal.java
@@ -41,7 +41,7 @@
}
}
- final AppView<? extends AppInfoWithSubtyping> appView;
+ final AppView<? extends AppInfoWithClassHierarchy> appView;
final Scope scope;
final Set<DexClass> visited = new HashSet<>();
@@ -49,7 +49,7 @@
boolean excludeInterfaces = false;
- ClassHierarchyTraversal(AppView<? extends AppInfoWithSubtyping> appView, Scope scope) {
+ ClassHierarchyTraversal(AppView<? extends AppInfoWithClassHierarchy> appView, Scope scope) {
this.appView = appView;
this.scope = scope;
}
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index 28a0da2..d775aa1 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -457,7 +457,7 @@
public boolean isInliningCandidate(
DexEncodedMethod container,
Reason inliningReason,
- AppInfoWithSubtyping appInfo,
+ AppInfoWithClassHierarchy appInfo,
WhyAreYouNotInliningReporter whyAreYouNotInliningReporter) {
checkIfObsolete();
return isInliningCandidate(
@@ -467,7 +467,7 @@
public boolean isInliningCandidate(
DexType containerType,
Reason inliningReason,
- AppInfoWithSubtyping appInfo,
+ AppInfoWithClassHierarchy appInfo,
WhyAreYouNotInliningReporter whyAreYouNotInliningReporter) {
checkIfObsolete();
diff --git a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
index ffa702a..914d7d6 100644
--- a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
+++ b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
@@ -2086,7 +2086,7 @@
// Don't reason at the level of interfaces in D8.
return ClassTypeElement.create(type, nullability, Collections.emptySet());
}
- assert appView.appInfo().hasSubtyping();
+ assert appView.appInfo().hasClassHierarchy();
if (appView.isInterface(type).isTrue()) {
return ClassTypeElement.create(
objectType, nullability, Collections.singleton(type));
@@ -2096,7 +2096,7 @@
// and compute the least upper bound of two interface sets. Hence, lazy
// computations. Most likely during lattice join. See {@link
// ClassTypeElement#getInterfaces}.
- return ClassTypeElement.create(type, nullability, appView.withSubtyping());
+ return ClassTypeElement.create(type, nullability, appView.withClassHierarchy());
}
assert type.isArrayType();
return ArrayTypeElement.create(finalMemberType, nullability);
@@ -2105,7 +2105,7 @@
}
public Set<DexType> getOrComputeLeastUpperBoundOfImplementedInterfaces(
- DexType type, AppView<? extends AppInfoWithSubtyping> appView) {
+ DexType type, AppView<? extends AppInfoWithClassHierarchy> appView) {
return classTypeInterfaces.computeIfAbsent(
type,
t -> {
diff --git a/src/main/java/com/android/tools/r8/graph/DexValue.java b/src/main/java/com/android/tools/r8/graph/DexValue.java
index bab3c75..2a7bf12 100644
--- a/src/main/java/com/android/tools/r8/graph/DexValue.java
+++ b/src/main/java/com/android/tools/r8/graph/DexValue.java
@@ -352,7 +352,7 @@
/** Returns an instruction that can be used to materialize this {@link DexValue} (or null). */
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
return null;
}
@@ -494,7 +494,7 @@
@Override
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
return code.createIntConstant(value, local);
}
}
@@ -576,7 +576,7 @@
@Override
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
return code.createIntConstant(value, local);
}
}
@@ -662,7 +662,7 @@
@Override
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
return code.createIntConstant(value, local);
}
}
@@ -744,7 +744,7 @@
@Override
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
return code.createIntConstant(value, local);
}
}
@@ -826,7 +826,7 @@
@Override
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
return code.createLongConstant(value, local);
}
}
@@ -894,7 +894,7 @@
@Override
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
return code.createFloatConstant(value, local);
}
@@ -982,7 +982,7 @@
@Override
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
return code.createDoubleConstant(value, local);
}
@@ -1110,7 +1110,7 @@
@Override
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
TypeElement type = TypeElement.stringClassType(appView, definitelyNotNull());
Value outValue = code.createValue(type, local);
ConstString instruction =
@@ -1168,7 +1168,7 @@
@Override
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
TypeElement type = TypeElement.stringClassType(appView, definitelyNotNull());
Value outValue = code.createValue(type, local);
DexItemBasedConstString instruction =
@@ -1566,7 +1566,7 @@
@Override
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
return code.createConstNull(local);
}
}
@@ -1652,7 +1652,7 @@
@Override
public ConstInstruction asConstInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, DebugLocalInfo local) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, IRCode code, DebugLocalInfo local) {
return code.createIntConstant(BooleanUtils.intValue(value), local);
}
}
diff --git a/src/main/java/com/android/tools/r8/graph/TopDownClassHierarchyTraversal.java b/src/main/java/com/android/tools/r8/graph/TopDownClassHierarchyTraversal.java
index 72e07e1..613db50 100644
--- a/src/main/java/com/android/tools/r8/graph/TopDownClassHierarchyTraversal.java
+++ b/src/main/java/com/android/tools/r8/graph/TopDownClassHierarchyTraversal.java
@@ -10,7 +10,7 @@
extends ClassHierarchyTraversal<T, TopDownClassHierarchyTraversal<T>> {
private TopDownClassHierarchyTraversal(
- AppView<? extends AppInfoWithSubtyping> appView, Scope scope) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, Scope scope) {
super(appView, scope);
}
@@ -19,7 +19,7 @@
* classes) that are reachable from a given set of sources.
*/
public static TopDownClassHierarchyTraversal<DexClass> forAllClasses(
- AppView<? extends AppInfoWithSubtyping> appView) {
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
return new TopDownClassHierarchyTraversal<>(appView, Scope.ALL_CLASSES);
}
@@ -28,7 +28,7 @@
* given set of sources.
*/
public static TopDownClassHierarchyTraversal<DexLibraryClass> forLibraryClasses(
- AppView<? extends AppInfoWithSubtyping> appView) {
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
return new TopDownClassHierarchyTraversal<>(appView, Scope.ONLY_LIBRARY_CLASSES);
}
@@ -37,7 +37,7 @@
* reachable from a given set of sources.
*/
public static TopDownClassHierarchyTraversal<DexClass> forLibraryAndClasspathClasses(
- AppView<? extends AppInfoWithSubtyping> appView) {
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
return new TopDownClassHierarchyTraversal<>(appView, Scope.ONLY_LIBRARY_AND_CLASSPATH_CLASSES);
}
@@ -46,7 +46,7 @@
* given set of sources.
*/
public static TopDownClassHierarchyTraversal<DexProgramClass> forProgramClasses(
- AppView<? extends AppInfoWithSubtyping> appView) {
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
return new TopDownClassHierarchyTraversal<>(appView, Scope.ONLY_PROGRAM_CLASSES);
}
diff --git a/src/main/java/com/android/tools/r8/graph/analysis/InitializedClassesInInstanceMethodsAnalysis.java b/src/main/java/com/android/tools/r8/graph/analysis/InitializedClassesInInstanceMethodsAnalysis.java
index 7ecd527..04dbef2 100644
--- a/src/main/java/com/android/tools/r8/graph/analysis/InitializedClassesInInstanceMethodsAnalysis.java
+++ b/src/main/java/com/android/tools/r8/graph/analysis/InitializedClassesInInstanceMethodsAnalysis.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.graph.analysis;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexEncodedMethod;
@@ -19,11 +19,11 @@
// A simple structure that stores the result of the analysis.
public static class InitializedClassesInInstanceMethods {
- private final AppView<? extends AppInfoWithSubtyping> appView;
+ private final AppView<? extends AppInfoWithClassHierarchy> appView;
private final Map<DexType, DexType> mapping;
private InitializedClassesInInstanceMethods(
- AppView<? extends AppInfoWithSubtyping> appView, Map<DexType, DexType> mapping) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, Map<DexType, DexType> mapping) {
this.appView = appView;
this.mapping = mapping;
}
@@ -31,7 +31,7 @@
public boolean isClassDefinitelyLoadedInInstanceMethodsOn(DexType subject, DexType context) {
// If `subject` is kept, then it is instantiated by reflection, which means that the analysis
// has not seen all allocation sites. In that case, we conservatively return false.
- AppInfoWithSubtyping appInfo = appView.appInfo();
+ AppInfoWithClassHierarchy appInfo = appView.appInfo();
if (appInfo.hasLiveness() && appInfo.withLiveness().isPinned(subject)) {
return false;
}
@@ -50,14 +50,14 @@
}
}
- private final AppView<? extends AppInfoWithSubtyping> appView;
+ private final AppView<? extends AppInfoWithClassHierarchy> appView;
// If the mapping contains an entry `X -> Y`, then the type Y is guaranteed to be initialized in
// all instance methods of X.
private final Map<DexType, DexType> mapping = new IdentityHashMap<>();
public InitializedClassesInInstanceMethodsAnalysis(
- AppView<? extends AppInfoWithSubtyping> appView) {
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
this.appView = appView;
}
@@ -73,7 +73,7 @@
}
// Record that the enclosing class is guaranteed to be initialized at the allocation site.
- AppInfoWithSubtyping appInfo = appView.appInfo();
+ AppInfoWithClassHierarchy appInfo = appView.appInfo();
DexType guaranteedToBeInitialized = context.holder();
DexType existingGuaranteedToBeInitialized =
mapping.getOrDefault(key, guaranteedToBeInitialized);
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java b/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java
index f8a621d..7397eb8 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.ir.analysis;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexEncodedMethod;
@@ -30,9 +30,9 @@
*/
public class TypeChecker {
- private final AppView<? extends AppInfoWithSubtyping> appView;
+ private final AppView<? extends AppInfoWithClassHierarchy> appView;
- public TypeChecker(AppView<? extends AppInfoWithSubtyping> appView) {
+ public TypeChecker(AppView<? extends AppInfoWithClassHierarchy> appView) {
this.appView = appView;
}
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java b/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java
index 2f152e8..f073108 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java
@@ -5,7 +5,6 @@
package com.android.tools.r8.ir.analysis.proto;
import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexMethod;
@@ -52,13 +51,13 @@
public class GeneratedMessageLiteBuilderShrinker {
- private final AppView<? extends AppInfoWithSubtyping> appView;
+ private final AppView<? extends AppInfoWithClassHierarchy> appView;
private final ProtoReferences references;
private final Map<DexProgramClass, DexEncodedMethod> builders = new IdentityHashMap<>();
GeneratedMessageLiteBuilderShrinker(
- AppView<? extends AppInfoWithSubtyping> appView, ProtoReferences references) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, ProtoReferences references) {
this.appView = appView;
this.references = references;
}
@@ -117,7 +116,7 @@
}
public static void addInliningHeuristicsForBuilderInlining(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
SubtypingInfo subtypingInfo,
PredicateSet<DexType> alwaysClassInline,
Set<DexType> neverMerge,
@@ -279,7 +278,7 @@
private static class RootSetExtension {
- private final AppView<? extends AppInfoWithSubtyping> appView;
+ private final AppView<? extends AppInfoWithClassHierarchy> appView;
private final ProtoReferences references;
private final PredicateSet<DexType> alwaysClassInline;
@@ -289,7 +288,7 @@
private final Set<DexMethod> bypassClinitforInlining;
RootSetExtension(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
PredicateSet<DexType> alwaysClassInline,
Set<DexType> neverMerge,
Set<DexMethod> alwaysInline,
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/type/ArrayTypeElement.java b/src/main/java/com/android/tools/r8/ir/analysis/type/ArrayTypeElement.java
index 4af45c6..4821b2b 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/type/ArrayTypeElement.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/type/ArrayTypeElement.java
@@ -5,7 +5,7 @@
import static com.android.tools.r8.ir.analysis.type.Nullability.maybeNull;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexType;
@@ -88,7 +88,7 @@
}
@Override
- public boolean isBasedOnMissingClass(AppView<? extends AppInfoWithSubtyping> appView) {
+ public boolean isBasedOnMissingClass(AppView<? extends AppInfoWithClassHierarchy> appView) {
return memberTypeLattice.isBasedOnMissingClass(appView);
}
@@ -129,7 +129,7 @@
@Override
public ArrayTypeElement fixupClassTypeReferences(
- Function<DexType, DexType> mapping, AppView<? extends AppInfoWithSubtyping> appView) {
+ Function<DexType, DexType> mapping, AppView<? extends AppInfoWithClassHierarchy> appView) {
if (memberTypeLattice.isReferenceType()) {
TypeElement substitutedMemberType =
memberTypeLattice.fixupClassTypeReferences(mapping, appView);
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/type/ClassTypeElement.java b/src/main/java/com/android/tools/r8/ir/analysis/type/ClassTypeElement.java
index be296e5..e71ef7d 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/type/ClassTypeElement.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/type/ClassTypeElement.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.ir.analysis.type;
import com.android.tools.r8.errors.CompilationError;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexType;
@@ -28,7 +28,7 @@
// Least upper bound of interfaces that this class type is implementing.
// Lazily computed on demand via DexItemFactory, where the canonicalized set will be maintained.
private Set<DexType> lazyInterfaces;
- private AppView<? extends AppInfoWithSubtyping> appView;
+ private AppView<? extends AppInfoWithClassHierarchy> appView;
// On-demand link between other nullability-variants.
private final NullabilityVariants<ClassTypeElement> variants;
private final DexType type;
@@ -42,7 +42,9 @@
}
public static ClassTypeElement create(
- DexType classType, Nullability nullability, AppView<? extends AppInfoWithSubtyping> appView) {
+ DexType classType,
+ Nullability nullability,
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
assert appView != null;
return NullabilityVariants.create(
nullability,
@@ -54,7 +56,7 @@
Nullability nullability,
Set<DexType> interfaces,
NullabilityVariants<ClassTypeElement> variants,
- AppView<? extends AppInfoWithSubtyping> appView) {
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
super(nullability);
assert classType.isClassType();
assert interfaces != null || appView != null;
@@ -99,9 +101,8 @@
return variants.getOrCreateElement(nullability, this::createVariant);
}
-
@Override
- public boolean isBasedOnMissingClass(AppView<? extends AppInfoWithSubtyping> appView) {
+ public boolean isBasedOnMissingClass(AppView<? extends AppInfoWithClassHierarchy> appView) {
return appView.appInfo().isMissingOrHasMissingSuperType(getClassType())
|| getInterfaces().stream()
.anyMatch(type -> appView.appInfo().isMissingOrHasMissingSuperType(type));
@@ -145,7 +146,7 @@
@Override
public TypeElement fixupClassTypeReferences(
- Function<DexType, DexType> mapping, AppView<? extends AppInfoWithSubtyping> appView) {
+ Function<DexType, DexType> mapping, AppView<? extends AppInfoWithClassHierarchy> appView) {
DexType mappedType = mapping.apply(type);
if (mappedType.isPrimitiveType()) {
return PrimitiveTypeElement.fromDexType(mappedType, false);
@@ -209,7 +210,7 @@
}
DexType lubType =
computeLeastUpperBoundOfClasses(
- appView.appInfo().withSubtyping(), getClassType(), other.getClassType());
+ appView.appInfo().withClassHierarchy(), getClassType(), other.getClassType());
Set<DexType> c1lubItfs = getInterfaces();
Set<DexType> c2lubItfs = other.getInterfaces();
Set<DexType> lubItfs = null;
@@ -217,7 +218,8 @@
lubItfs = c1lubItfs;
}
if (lubItfs == null) {
- lubItfs = computeLeastUpperBoundOfInterfaces(appView.withSubtyping(), c1lubItfs, c2lubItfs);
+ lubItfs =
+ computeLeastUpperBoundOfInterfaces(appView.withClassHierarchy(), c1lubItfs, c2lubItfs);
}
return ClassTypeElement.create(lubType, nullability, lubItfs);
}
@@ -238,7 +240,7 @@
}
public static DexType computeLeastUpperBoundOfClasses(
- AppInfoWithSubtyping appInfo, DexType type1, DexType type2) {
+ AppInfoWithClassHierarchy appInfo, DexType type1, DexType type2) {
// Compiling R8 with R8, this hits more than 1/3 of cases.
if (type1 == type2) {
return type1;
@@ -282,7 +284,7 @@
}
public static Set<DexType> computeLeastUpperBoundOfInterfaces(
- AppView<? extends AppInfoWithSubtyping> appView, Set<DexType> s1, Set<DexType> s2) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, Set<DexType> s1, Set<DexType> s2) {
if (s1.isEmpty() || s2.isEmpty()) {
return Collections.emptySet();
}
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/type/DestructivePhiTypeUpdater.java b/src/main/java/com/android/tools/r8/ir/analysis/type/DestructivePhiTypeUpdater.java
index 6c1136f..29ca247 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/type/DestructivePhiTypeUpdater.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/type/DestructivePhiTypeUpdater.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.ir.analysis.type;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.ir.code.BasicBlock;
@@ -20,15 +20,15 @@
public class DestructivePhiTypeUpdater {
- private final AppView<? extends AppInfoWithSubtyping> appView;
+ private final AppView<? extends AppInfoWithClassHierarchy> appView;
private final Function<DexType, DexType> mapping;
- public DestructivePhiTypeUpdater(AppView<? extends AppInfoWithSubtyping> appView) {
+ public DestructivePhiTypeUpdater(AppView<? extends AppInfoWithClassHierarchy> appView) {
this(appView, appView.graphLense()::lookupType);
}
public DestructivePhiTypeUpdater(
- AppView<? extends AppInfoWithSubtyping> appView, Function<DexType, DexType> mapping) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, Function<DexType, DexType> mapping) {
this.appView = appView;
this.mapping = mapping;
}
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/type/TypeAnalysis.java b/src/main/java/com/android/tools/r8/ir/analysis/type/TypeAnalysis.java
index ffd23cc..0e3f404 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/type/TypeAnalysis.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/type/TypeAnalysis.java
@@ -3,8 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.ir.analysis.type;
-
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexType;
@@ -157,12 +156,12 @@
}
public static DexType getRefinedReceiverType(
- AppView<? extends AppInfoWithSubtyping> appView, InvokeMethodWithReceiver invoke) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, InvokeMethodWithReceiver invoke) {
return getRefinedReceiverType(appView, invoke.getInvokedMethod(), invoke.getReceiver());
}
public static DexType getRefinedReceiverType(
- AppView<? extends AppInfoWithSubtyping> appView, DexMethod method, Value receiver) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, DexMethod method, Value receiver) {
TypeElement lattice = receiver.getDynamicUpperBoundType(appView);
DexType staticReceiverType = method.holder;
if (lattice.isClassType()) {
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/type/TypeElement.java b/src/main/java/com/android/tools/r8/ir/analysis/type/TypeElement.java
index ecc7340..10f5ece 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/type/TypeElement.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/type/TypeElement.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.ir.analysis.type;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
@@ -68,7 +68,7 @@
}
public TypeElement fixupClassTypeReferences(
- Function<DexType, DexType> mapping, AppView<? extends AppInfoWithSubtyping> appView) {
+ Function<DexType, DexType> mapping, AppView<? extends AppInfoWithClassHierarchy> appView) {
return this;
}
@@ -228,7 +228,7 @@
* @return {@code} true if this type is based on a missing class.
* @param appView
*/
- public boolean isBasedOnMissingClass(AppView<? extends AppInfoWithSubtyping> appView) {
+ public boolean isBasedOnMissingClass(AppView<? extends AppInfoWithClassHierarchy> appView) {
return false;
}
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/value/SingleConstClassValue.java b/src/main/java/com/android/tools/r8/ir/analysis/value/SingleConstClassValue.java
index 3f5640d..d7e7c8c 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/value/SingleConstClassValue.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/value/SingleConstClassValue.java
@@ -8,7 +8,7 @@
import static com.android.tools.r8.ir.analysis.type.TypeElement.classClassType;
import static com.android.tools.r8.optimize.MemberRebindingAnalysis.isClassTypeVisibleFromContext;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DebugLocalInfo;
import com.android.tools.r8.graph.DexClass;
@@ -62,7 +62,9 @@
@Override
public Instruction createMaterializingInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, TypeAndLocalInfoSupplier info) {
+ AppView<? extends AppInfoWithClassHierarchy> appView,
+ IRCode code,
+ TypeAndLocalInfoSupplier info) {
TypeElement typeLattice = info.getOutType();
DebugLocalInfo debugLocalInfo = info.getLocalInfo();
assert typeLattice.isClassType();
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/value/SingleFieldValue.java b/src/main/java/com/android/tools/r8/ir/analysis/value/SingleFieldValue.java
index 8c79c29..a93a324 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/value/SingleFieldValue.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/value/SingleFieldValue.java
@@ -7,7 +7,7 @@
import static com.android.tools.r8.ir.analysis.type.Nullability.maybeNull;
import static com.android.tools.r8.optimize.MemberRebindingAnalysis.isMemberVisibleFromOriginalContext;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexEncodedField;
@@ -67,7 +67,9 @@
@Override
public Instruction createMaterializingInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, TypeAndLocalInfoSupplier info) {
+ AppView<? extends AppInfoWithClassHierarchy> appView,
+ IRCode code,
+ TypeAndLocalInfoSupplier info) {
TypeElement type = TypeElement.fromDexType(field.type, maybeNull(), appView);
assert type.lessThanOrEqual(info.getOutType(), appView);
Value outValue = code.createValue(type, info.getLocalInfo());
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/value/SingleNumberValue.java b/src/main/java/com/android/tools/r8/ir/analysis/value/SingleNumberValue.java
index e2f12fe..f25499a 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/value/SingleNumberValue.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/value/SingleNumberValue.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.ir.analysis.value;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DebugLocalInfo;
import com.android.tools.r8.graph.DexType;
@@ -67,7 +67,9 @@
@Override
public Instruction createMaterializingInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, TypeAndLocalInfoSupplier info) {
+ AppView<? extends AppInfoWithClassHierarchy> appView,
+ IRCode code,
+ TypeAndLocalInfoSupplier info) {
TypeElement typeLattice = info.getOutType();
DebugLocalInfo debugLocalInfo = info.getLocalInfo();
assert !typeLattice.isReferenceType() || value == 0;
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/value/SingleStringValue.java b/src/main/java/com/android/tools/r8/ir/analysis/value/SingleStringValue.java
index 1280264..bd7f0da 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/value/SingleStringValue.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/value/SingleStringValue.java
@@ -7,7 +7,7 @@
import static com.android.tools.r8.ir.analysis.type.Nullability.definitelyNotNull;
import static com.android.tools.r8.ir.analysis.type.TypeElement.stringClassType;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DebugLocalInfo;
import com.android.tools.r8.graph.DexString;
@@ -62,7 +62,7 @@
@Override
public Instruction createMaterializingInstruction(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
IRCode code,
TypeAndLocalInfoSupplier info) {
TypeElement typeLattice = info.getOutType();
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/value/SingleValue.java b/src/main/java/com/android/tools/r8/ir/analysis/value/SingleValue.java
index 1b3e59a..b23c247 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/value/SingleValue.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/value/SingleValue.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.ir.analysis.value;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.GraphLense;
@@ -36,7 +36,9 @@
* #isMaterializableInContext}.
*/
public abstract Instruction createMaterializingInstruction(
- AppView<? extends AppInfoWithSubtyping> appView, IRCode code, TypeAndLocalInfoSupplier info);
+ AppView<? extends AppInfoWithClassHierarchy> appView,
+ IRCode code,
+ TypeAndLocalInfoSupplier info);
public abstract boolean isMaterializableInContext(AppView<?> appView, DexType context);
diff --git a/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java b/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
index 4bd58c4..26b0acd 100644
--- a/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
+++ b/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
@@ -1886,7 +1886,6 @@
for (int i = 0; i < prevCatchTargets.size(); i++) {
int prevCatchTarget = prevCatchTargets.get(i);
DexType prevCatchGuard = prevCatchGuards.get(i);
- // TODO(sgjesse): Check sub-types of guards. Will require AppInfoWithSubtyping.
if (newCatchGuards.contains(prevCatchGuard)) {
continue;
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionListIterator.java b/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionListIterator.java
index f43bb3c..fe74303 100644
--- a/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionListIterator.java
+++ b/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionListIterator.java
@@ -7,7 +7,7 @@
import static com.android.tools.r8.ir.analysis.type.Nullability.maybeNull;
import static com.android.tools.r8.ir.code.DominatorTree.Assumption.MAY_HAVE_UNREACHABLE_BLOCKS;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexString;
@@ -272,7 +272,7 @@
@Override
public void replaceCurrentInstructionWithThrowNull(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
IRCode code,
ListIterator<BasicBlock> blockIterator,
Set<BasicBlock> blocksToRemove,
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCode.java b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
index 7c8f872..67f3616 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCode.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
@@ -6,7 +6,7 @@
import static com.android.tools.r8.ir.analysis.type.Nullability.definitelyNotNull;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DebugLocalInfo;
import com.android.tools.r8.graph.DexEncodedMethod;
@@ -566,7 +566,8 @@
return true;
}
- public boolean hasNoVerticallyMergedClasses(AppView<? extends AppInfoWithSubtyping> appView) {
+ public boolean hasNoVerticallyMergedClasses(
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
VerticallyMergedClasses verticallyMergedClasses = appView.verticallyMergedClasses();
if (verticallyMergedClasses == null) {
return true;
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionListIterator.java b/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionListIterator.java
index b009a8b..b9cc832 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionListIterator.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionListIterator.java
@@ -5,7 +5,7 @@
package com.android.tools.r8.ir.code;
import com.android.tools.r8.errors.Unimplemented;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexString;
@@ -59,7 +59,7 @@
@Override
public void replaceCurrentInstructionWithThrowNull(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
IRCode code,
ListIterator<BasicBlock> blockIterator,
Set<BasicBlock> blocksToRemove,
diff --git a/src/main/java/com/android/tools/r8/ir/code/InstructionListIterator.java b/src/main/java/com/android/tools/r8/ir/code/InstructionListIterator.java
index ccb30e4..a546ee3 100644
--- a/src/main/java/com/android/tools/r8/ir/code/InstructionListIterator.java
+++ b/src/main/java/com/android/tools/r8/ir/code/InstructionListIterator.java
@@ -5,7 +5,7 @@
package com.android.tools.r8.ir.code;
import com.android.tools.r8.errors.Unimplemented;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexString;
@@ -84,7 +84,7 @@
/**
* Replace the current instruction with null throwing instructions.
*
- * @param appView with subtype info through which we can test if the guard is subtype of NPE.
+ * @param appView with hierarchy info through which we can test if the guard is subtype of NPE.
* @param code the IR code for the block this iterator originates from.
* @param blockIterator basic block iterator used to iterate the blocks.
* @param blocksToRemove set passed where blocks that were detached from the graph, but not
@@ -96,7 +96,7 @@
* @param affectedValues set passed where values depending on detached blocks will be added.
*/
void replaceCurrentInstructionWithThrowNull(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
IRCode code,
ListIterator<BasicBlock> blockIterator,
Set<BasicBlock> blocksToRemove,
diff --git a/src/main/java/com/android/tools/r8/ir/code/InvokeCustom.java b/src/main/java/com/android/tools/r8/ir/code/InvokeCustom.java
index 2d955ae..c3fec64 100644
--- a/src/main/java/com/android/tools/r8/ir/code/InvokeCustom.java
+++ b/src/main/java/com/android/tools/r8/ir/code/InvokeCustom.java
@@ -67,7 +67,7 @@
return returnType;
}
List<DexType> lambdaInterfaces =
- LambdaDescriptor.getInterfaces(callSite, appView.appInfo().withSubtyping());
+ LambdaDescriptor.getInterfaces(callSite, appView.appInfo().withClassHierarchy());
if (lambdaInterfaces == null || lambdaInterfaces.isEmpty()) {
return returnType;
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/LinearFlowInstructionListIterator.java b/src/main/java/com/android/tools/r8/ir/code/LinearFlowInstructionListIterator.java
index 0dc3f97..d73f8df 100644
--- a/src/main/java/com/android/tools/r8/ir/code/LinearFlowInstructionListIterator.java
+++ b/src/main/java/com/android/tools/r8/ir/code/LinearFlowInstructionListIterator.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.ir.code;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexString;
@@ -67,7 +67,7 @@
@Override
public void replaceCurrentInstructionWithThrowNull(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
IRCode code,
ListIterator<BasicBlock> blockIterator,
Set<BasicBlock> blocksToRemove,
diff --git a/src/main/java/com/android/tools/r8/ir/code/Phi.java b/src/main/java/com/android/tools/r8/ir/code/Phi.java
index 26e808f..a9365d8 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Phi.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Phi.java
@@ -6,7 +6,7 @@
import com.android.tools.r8.cf.TypeVerificationHelper;
import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.errors.InvalidDebugInfoException;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DebugLocalInfo;
import com.android.tools.r8.graph.DexMethod;
@@ -407,7 +407,8 @@
}
@Override
- public TypeElement getDynamicUpperBoundType(AppView<? extends AppInfoWithSubtyping> appView) {
+ public TypeElement getDynamicUpperBoundType(
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
Set<Phi> reachablePhis = SetUtils.newIdentityHashSet(this);
Deque<Phi> worklist = DequeUtils.newArrayDeque(this);
while (!worklist.isEmpty()) {
diff --git a/src/main/java/com/android/tools/r8/ir/code/Value.java b/src/main/java/com/android/tools/r8/ir/code/Value.java
index 87ee96f..bbe7f7f 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Value.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Value.java
@@ -14,7 +14,7 @@
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DebugLocalInfo;
import com.android.tools.r8.graph.DexClass;
@@ -1132,7 +1132,8 @@
return type;
}
- public TypeElement getDynamicUpperBoundType(AppView<? extends AppInfoWithSubtyping> appView) {
+ public TypeElement getDynamicUpperBoundType(
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
Value root = getAliasedValue();
if (root.isPhi()) {
assert getSpecificAliasedValue(
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
index db7948c..f605494 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
@@ -31,7 +31,7 @@
import static com.android.tools.r8.ir.code.Opcodes.STATIC_PUT;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexCallSite;
import com.android.tools.r8.graph.DexClass;
@@ -100,12 +100,12 @@
public class LensCodeRewriter {
- private final AppView<? extends AppInfoWithSubtyping> appView;
+ private final AppView<? extends AppInfoWithClassHierarchy> appView;
private final EnumUnboxer enumUnboxer;
private final Map<DexProto, DexProto> protoFixupCache = new ConcurrentHashMap<>();
- LensCodeRewriter(AppView<? extends AppInfoWithSubtyping> appView, EnumUnboxer enumUnboxer) {
+ LensCodeRewriter(AppView<? extends AppInfoWithClassHierarchy> appView, EnumUnboxer enumUnboxer) {
this.appView = appView;
this.enumUnboxer = enumUnboxer;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
index d579a34..15845e8 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
@@ -9,7 +9,7 @@
import com.android.tools.r8.androidapi.AvailableApiExceptions;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.graph.AccessFlags;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexEncodedMethod;
@@ -596,7 +596,7 @@
}
InlineeWithReason buildInliningIR(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
InvokeMethod invoke,
DexEncodedMethod context,
InliningIRProvider inliningIRProvider,
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/MemberPoolCollection.java b/src/main/java/com/android/tools/r8/ir/optimize/MemberPoolCollection.java
index 46ac1ce..4f699e6 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/MemberPoolCollection.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/MemberPoolCollection.java
@@ -111,7 +111,6 @@
abstract Runnable computeMemberPoolForClass(DexClass clazz);
- // TODO(jsjeon): maybe be part of AppInfoWithSubtyping?
private Set<DexClass> getAllSuperTypesInclusive(
DexClass subject, Predicate<DexClass> stoppingCriterion) {
Set<DexClass> superTypes = new HashSet<>();
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java b/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java
index a7e4875..e3dd56d 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java
@@ -113,7 +113,7 @@
public void eliminateRedundantRead(InstructionListIterator it, FieldInstruction redundant) {
affectedValues.addAll(redundant.value().affectedValues());
it.replaceCurrentInstruction(
- value.createMaterializingInstruction(appView.withSubtyping(), code, redundant));
+ value.createMaterializingInstruction(appView.withClassHierarchy(), code, redundant));
}
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java b/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java
index 6b854e6..0676f1c 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java
@@ -7,7 +7,7 @@
import static com.android.tools.r8.ir.optimize.UninstantiatedTypeOptimization.Strategy.ALLOW_ARGUMENT_REMOVAL;
import static com.android.tools.r8.ir.optimize.UninstantiatedTypeOptimization.Strategy.DISALLOW_ARGUMENT_REMOVAL;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexEncodedMethod;
@@ -403,7 +403,7 @@
private static boolean isThrowNullCandidate(
Value couldBeNullValue,
Instruction current,
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
DexType context) {
if (!couldBeNullValue.isAlwaysNull(appView)) {
return false;
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java
index 791c889..f4d341b 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java
@@ -6,7 +6,7 @@
import static com.android.tools.r8.ir.analysis.type.Nullability.definitelyNotNull;
import static com.android.tools.r8.ir.analysis.type.Nullability.maybeNull;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.ir.analysis.type.Nullability;
@@ -153,7 +153,7 @@
}
public static CallSiteOptimizationInfo fromArguments(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
DexEncodedMethod method,
List<Value> inValues) {
boolean allowConstantPropagation = appView.options().enablePropagationOfConstantsAtCallSites;
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/MutableFieldOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/MutableFieldOptimizationInfo.java
index 118c285..3237c20 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/MutableFieldOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/MutableFieldOptimizationInfo.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.ir.optimize.info;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.GraphLense;
@@ -35,7 +35,7 @@
private TypeElement dynamicUpperBoundType = null;
public MutableFieldOptimizationInfo fixupClassTypeReferences(
- Function<DexType, DexType> mapping, AppView<? extends AppInfoWithSubtyping> appView) {
+ Function<DexType, DexType> mapping, AppView<? extends AppInfoWithClassHierarchy> appView) {
if (dynamicUpperBoundType != null) {
dynamicUpperBoundType = dynamicUpperBoundType.fixupClassTypeReferences(mapping, appView);
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/UpdatableMethodOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/UpdatableMethodOptimizationInfo.java
index 9a3548d..c1012ca 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/UpdatableMethodOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/UpdatableMethodOptimizationInfo.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.ir.optimize.info;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.GraphLense;
@@ -145,7 +145,7 @@
}
public UpdatableMethodOptimizationInfo fixupClassTypeReferences(
- Function<DexType, DexType> mapping, AppView<? extends AppInfoWithSubtyping> appView) {
+ Function<DexType, DexType> mapping, AppView<? extends AppInfoWithClassHierarchy> appView) {
if (returnsObjectWithUpperBoundType != null) {
returnsObjectWithUpperBoundType =
returnsObjectWithUpperBoundType.fixupClassTypeReferences(mapping, appView);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/field/InstanceFieldTypeInitializationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/field/InstanceFieldTypeInitializationInfo.java
index ec77b22..3bfce16 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/field/InstanceFieldTypeInitializationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/field/InstanceFieldTypeInitializationInfo.java
@@ -63,10 +63,11 @@
return new InstanceFieldTypeInitializationInfo(
dynamicLowerBoundType != null
? dynamicLowerBoundType
- .fixupClassTypeReferences(lens::lookupType, appView.withSubtyping())
+ .fixupClassTypeReferences(lens::lookupType, appView.withClassHierarchy())
.asClassType()
: null,
- dynamicUpperBoundType.fixupClassTypeReferences(lens::lookupType, appView.withSubtyping()));
+ dynamicUpperBoundType.fixupClassTypeReferences(
+ lens::lookupType, appView.withClassHierarchy()));
}
@Override
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaGroup.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaGroup.java
index 041616c..b80283b 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaGroup.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaGroup.java
@@ -5,7 +5,7 @@
package com.android.tools.r8.ir.optimize.lambda;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexEncodedField;
@@ -156,7 +156,7 @@
public abstract Strategy getCodeStrategy();
public abstract ThrowingConsumer<DexClass, LambdaStructureError> lambdaClassValidator(
- Kotlin kotlin, AppInfoWithSubtyping appInfo);
+ Kotlin kotlin, AppInfoWithClassHierarchy appInfo);
// Package for a lambda group class to be created in.
protected abstract String getTypePackage();
@@ -164,7 +164,7 @@
protected abstract String getGroupSuffix();
final DexProgramClass synthesizeClass(
- AppView<? extends AppInfoWithSubtyping> appView, OptimizationFeedback feedback) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, OptimizationFeedback feedback) {
assert classType == null;
assert verifyLambdaIds(true);
List<LambdaInfo> lambdas = Lists.newArrayList(this.lambdas.values());
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaGroupClassBuilder.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaGroupClassBuilder.java
index 2c4315c..697638f 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaGroupClassBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaGroupClassBuilder.java
@@ -4,7 +4,7 @@
package com.android.tools.r8.ir.optimize.lambda;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.ClassAccessFlags;
import com.android.tools.r8.graph.DexAnnotationSet;
@@ -35,7 +35,7 @@
}
public final DexProgramClass synthesizeClass(
- AppView<? extends AppInfoWithSubtyping> appView, OptimizationFeedback feedback) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, OptimizationFeedback feedback) {
DexType groupClassType = group.getGroupClassType();
DexType superClassType = getSuperClassType();
DexProgramClass programClass =
@@ -79,7 +79,7 @@
protected abstract DexEncodedField[] buildInstanceFields();
protected abstract DexEncodedField[] buildStaticFields(
- AppView<? extends AppInfoWithSubtyping> appView, OptimizationFeedback feedback);
+ AppView<? extends AppInfoWithClassHierarchy> appView, OptimizationFeedback feedback);
protected abstract DexTypeList buildInterfaces();
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/JStyleLambdaGroup.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/JStyleLambdaGroup.java
index f868855..4aafb60 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/JStyleLambdaGroup.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/JStyleLambdaGroup.java
@@ -5,7 +5,7 @@
package com.android.tools.r8.ir.optimize.lambda.kotlin;
import com.android.tools.r8.code.ReturnVoid;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexEncodedField;
@@ -114,7 +114,7 @@
@Override
public ThrowingConsumer<DexClass, LambdaStructureError> lambdaClassValidator(
- Kotlin kotlin, AppInfoWithSubtyping appInfo) {
+ Kotlin kotlin, AppInfoWithClassHierarchy appInfo) {
return new ClassValidator(kotlin, appInfo);
}
@@ -155,7 +155,7 @@
// Specialized class validator.
private class ClassValidator extends KotlinLambdaClassValidator {
- ClassValidator(Kotlin kotlin, AppInfoWithSubtyping appInfo) {
+ ClassValidator(Kotlin kotlin, AppInfoWithClassHierarchy appInfo) {
super(kotlin, JStyleLambdaGroup.this, appInfo);
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KStyleLambdaGroup.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KStyleLambdaGroup.java
index 0295106..cc9061a 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KStyleLambdaGroup.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KStyleLambdaGroup.java
@@ -7,7 +7,7 @@
import com.android.tools.r8.code.Const16;
import com.android.tools.r8.code.Const4;
import com.android.tools.r8.code.ReturnVoid;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexEncodedField;
@@ -120,7 +120,7 @@
@Override
public ThrowingConsumer<DexClass, LambdaStructureError> lambdaClassValidator(
- Kotlin kotlin, AppInfoWithSubtyping appInfo) {
+ Kotlin kotlin, AppInfoWithClassHierarchy appInfo) {
return new ClassValidator(kotlin, appInfo);
}
@@ -161,7 +161,7 @@
// Specialized class validator.
private final class ClassValidator extends KotlinLambdaClassValidator {
- ClassValidator(Kotlin kotlin, AppInfoWithSubtyping appInfo) {
+ ClassValidator(Kotlin kotlin, AppInfoWithClassHierarchy appInfo) {
super(kotlin, KStyleLambdaGroup.this, appInfo);
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaClassValidator.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaClassValidator.java
index 3e38f67..a956f84 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaClassValidator.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaClassValidator.java
@@ -16,7 +16,7 @@
import com.android.tools.r8.code.ReturnVoid;
import com.android.tools.r8.code.SputObject;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.Code;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexEncodedField;
@@ -54,9 +54,10 @@
final Kotlin kotlin;
private final KotlinLambdaGroup group;
- private final AppInfoWithSubtyping appInfo;
+ private final AppInfoWithClassHierarchy appInfo;
- KotlinLambdaClassValidator(Kotlin kotlin, KotlinLambdaGroup group, AppInfoWithSubtyping appInfo) {
+ KotlinLambdaClassValidator(
+ Kotlin kotlin, KotlinLambdaGroup group, AppInfoWithClassHierarchy appInfo) {
this.kotlin = kotlin;
this.group = group;
this.appInfo = appInfo;
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaGroupClassBuilder.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaGroupClassBuilder.java
index 9f14329..dfd62d3 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaGroupClassBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaGroupClassBuilder.java
@@ -6,7 +6,7 @@
import static com.android.tools.r8.ir.analysis.type.Nullability.definitelyNotNull;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.ClassAccessFlags;
import com.android.tools.r8.graph.DexAnnotation;
@@ -223,7 +223,7 @@
@Override
protected DexEncodedField[] buildStaticFields(
- AppView<? extends AppInfoWithSubtyping> appView, OptimizationFeedback feedback) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, OptimizationFeedback feedback) {
if (!group.isStateless()) {
return DexEncodedField.EMPTY_ARRAY;
}
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 03072bb..6a1b64f 100644
--- a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
+++ b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
@@ -8,7 +8,6 @@
import static com.android.tools.r8.graph.ResolutionResult.SingleResolutionResult.isOverriding;
import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
import com.android.tools.r8.graph.DexCallSite;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexClassAndMethod;
@@ -71,7 +70,8 @@
import java.util.stream.Collectors;
/** Encapsulates liveness and reachability information for an application. */
-public class AppInfoWithLiveness extends AppInfoWithSubtyping implements InstantiatedSubTypeInfo {
+public class AppInfoWithLiveness extends AppInfoWithClassHierarchy
+ implements InstantiatedSubTypeInfo {
/** Set of reachable proto types that will be dead code eliminated. */
private final Set<DexType> deadProtoTypes;
/** Set of types that are mentioned in the program, but for which no definition exists. */
@@ -278,7 +278,7 @@
}
public AppInfoWithLiveness(
- AppInfoWithSubtyping appInfoWithSubtyping,
+ AppInfoWithClassHierarchy appInfoWithSubtyping,
Set<DexType> deadProtoTypes,
Set<DexType> missingTypes,
Set<DexType> liveTypes,
diff --git a/src/main/java/com/android/tools/r8/shaking/ConsequentRootSetBuilder.java b/src/main/java/com/android/tools/r8/shaking/ConsequentRootSetBuilder.java
index 2e5edba..ddb649c 100644
--- a/src/main/java/com/android/tools/r8/shaking/ConsequentRootSetBuilder.java
+++ b/src/main/java/com/android/tools/r8/shaking/ConsequentRootSetBuilder.java
@@ -3,14 +3,15 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
class ConsequentRootSetBuilder extends RootSetBuilder {
private final Enqueuer enqueuer;
- ConsequentRootSetBuilder(AppView<? extends AppInfoWithSubtyping> appView, Enqueuer enqueuer) {
+ ConsequentRootSetBuilder(
+ AppView<? extends AppInfoWithClassHierarchy> appView, Enqueuer enqueuer) {
super(appView, appView.appInfo().app(), null);
this.enqueuer = enqueuer;
}
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index 4fb2fe2..a2661dd 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -24,7 +24,6 @@
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.experimental.graphinfo.GraphConsumer;
import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.CfCode;
import com.android.tools.r8.graph.DexAnnotation;
@@ -177,8 +176,8 @@
private Set<EnqueuerInvokeAnalysis> invokeAnalyses = Sets.newIdentityHashSet();
// Don't hold a direct pointer to app info (use appView).
- private AppInfoWithSubtyping appInfo;
- private final AppView<AppInfoWithSubtyping> appView;
+ private AppInfoWithClassHierarchy appInfo;
+ private final AppView<AppInfoWithClassHierarchy> appView;
private final SubtypingInfo subtypingInfo;
private final InternalOptions options;
private RootSet rootSet;
@@ -344,13 +343,13 @@
private final Set<DexProgramClass> classesWithSerializableLambdas = Sets.newIdentityHashSet();
Enqueuer(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
GraphConsumer keptGraphConsumer,
Mode mode) {
assert appView.appServices() != null;
InternalOptions options = appView.options();
this.appInfo = appView.appInfo();
- this.appView = appView.withSubtyping();
+ this.appView = appView.withClassHierarchy();
this.subtypingInfo =
new SubtypingInfo(appView.appInfo().app().asDirect().allClasses(), appView);
this.forceProguardCompatibility = options.forceProguardCompatibility;
@@ -2741,7 +2740,7 @@
// Now all additions are computed, the application is atomically extended with those additions.
Builder appBuilder = appInfo.app().asDirect().builder();
additions.amendApplication(appBuilder);
- appInfo = new AppInfoWithSubtyping(appBuilder.build());
+ appInfo = new AppInfoWithClassHierarchy(appBuilder.build());
appView.setAppInfo(appInfo);
// Finally once all synthesized items "exist" it is now safe to continue tracing. The new work
@@ -2811,7 +2810,7 @@
return true;
}
- private AppInfoWithLiveness createAppInfo(AppInfoWithSubtyping appInfo) {
+ private AppInfoWithLiveness createAppInfo(AppInfoWithClassHierarchy appInfo) {
// Once all tracing is done, we generate accessor methods for lambdas.
// These are assumed to be simple forwarding or access flag updates, thus no further tracing
// is needed. These cannot be generated as part of lambda synthesis as changing a direct method
diff --git a/src/main/java/com/android/tools/r8/shaking/EnqueuerFactory.java b/src/main/java/com/android/tools/r8/shaking/EnqueuerFactory.java
index a949527..ddc5f62 100644
--- a/src/main/java/com/android/tools/r8/shaking/EnqueuerFactory.java
+++ b/src/main/java/com/android/tools/r8/shaking/EnqueuerFactory.java
@@ -5,7 +5,7 @@
package com.android.tools.r8.shaking;
import com.android.tools.r8.experimental.graphinfo.GraphConsumer;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.shaking.Enqueuer.Mode;
@@ -14,12 +14,12 @@
public class EnqueuerFactory {
public static Enqueuer createForInitialTreeShaking(
- AppView<? extends AppInfoWithSubtyping> appView) {
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
return new Enqueuer(appView, null, Mode.INITIAL_TREE_SHAKING);
}
public static Enqueuer createForFinalTreeShaking(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
GraphConsumer keptGraphConsumer,
Set<DexType> initialMissingTypes) {
Enqueuer enqueuer = new Enqueuer(appView, keptGraphConsumer, Mode.FINAL_TREE_SHAKING);
@@ -29,17 +29,18 @@
return enqueuer;
}
- public static Enqueuer createForMainDexTracing(AppView<? extends AppInfoWithSubtyping> appView) {
+ public static Enqueuer createForMainDexTracing(
+ AppView<? extends AppInfoWithClassHierarchy> appView) {
return createForMainDexTracing(appView, null);
}
public static Enqueuer createForMainDexTracing(
- AppView<? extends AppInfoWithSubtyping> appView, GraphConsumer keptGraphConsumer) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, GraphConsumer keptGraphConsumer) {
return new Enqueuer(appView, keptGraphConsumer, Mode.MAIN_DEX_TRACING);
}
public static Enqueuer createForWhyAreYouKeeping(
- AppView<? extends AppInfoWithSubtyping> appView, GraphConsumer keptGraphConsumer) {
+ AppView<? extends AppInfoWithClassHierarchy> appView, GraphConsumer keptGraphConsumer) {
return new Enqueuer(appView, keptGraphConsumer, Mode.WHY_ARE_YOU_KEEPING);
}
}
diff --git a/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java b/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java
index 225aff0..d8fbb6d 100644
--- a/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java
+++ b/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java
@@ -5,7 +5,7 @@
import static com.android.tools.r8.graph.DexProgramClass.asProgramClassOrNull;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexDefinition;
@@ -36,7 +36,7 @@
public class IfRuleEvaluator {
- private final AppView<? extends AppInfoWithSubtyping> appView;
+ private final AppView<? extends AppInfoWithClassHierarchy> appView;
private final SubtypingInfo subtypingInfo;
private final Enqueuer enqueuer;
private final ExecutorService executorService;
@@ -45,7 +45,7 @@
private final ConsequentRootSetBuilder rootSetBuilder;
IfRuleEvaluator(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
SubtypingInfo subtypingInfo,
Enqueuer enqueuer,
ExecutorService executorService,
diff --git a/src/main/java/com/android/tools/r8/shaking/MainDexDirectReferenceTracer.java b/src/main/java/com/android/tools/r8/shaking/MainDexDirectReferenceTracer.java
index 15d4e4b..e686f98 100644
--- a/src/main/java/com/android/tools/r8/shaking/MainDexDirectReferenceTracer.java
+++ b/src/main/java/com/android/tools/r8/shaking/MainDexDirectReferenceTracer.java
@@ -5,7 +5,7 @@
package com.android.tools.r8.shaking;
import com.android.tools.r8.dex.IndexedItemCollection;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.DexAnnotationSet;
import com.android.tools.r8.graph.DexCallSite;
import com.android.tools.r8.graph.DexClass;
@@ -27,10 +27,11 @@
new AnnotationDirectReferenceCollector();
private final DirectReferencesCollector codeDirectReferenceCollector;
- private final AppInfoWithSubtyping appInfo;
+ private final AppInfoWithClassHierarchy appInfo;
private final Consumer<DexType> consumer;
- public MainDexDirectReferenceTracer(AppInfoWithSubtyping appInfo, Consumer<DexType> consumer) {
+ public MainDexDirectReferenceTracer(
+ AppInfoWithClassHierarchy appInfo, Consumer<DexType> consumer) {
this.codeDirectReferenceCollector = new DirectReferencesCollector(appInfo.dexItemFactory());
this.appInfo = appInfo;
this.consumer = consumer;
@@ -61,7 +62,7 @@
}
public static boolean hasReferencesOutsideFromCode(
- AppInfoWithSubtyping appInfo, DexEncodedMethod method, Set<DexType> classes) {
+ AppInfoWithClassHierarchy appInfo, DexEncodedMethod method, Set<DexType> classes) {
BooleanBox result = new BooleanBox();
diff --git a/src/main/java/com/android/tools/r8/shaking/MainDexListBuilder.java b/src/main/java/com/android/tools/r8/shaking/MainDexListBuilder.java
index b46840b..fc34925 100644
--- a/src/main/java/com/android/tools/r8/shaking/MainDexListBuilder.java
+++ b/src/main/java/com/android/tools/r8/shaking/MainDexListBuilder.java
@@ -5,7 +5,7 @@
import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.graph.AppInfo;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.DexAnnotation;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexEncodedMethod;
@@ -28,7 +28,7 @@
public class MainDexListBuilder {
private final Set<DexType> roots;
- private final AppInfoWithSubtyping appInfo;
+ private final AppInfoWithClassHierarchy appInfo;
private final Map<DexType, Boolean> annotationTypeContainEnum;
private final DirectMappedDexApplication dexApplication;
private final MainDexClasses.Builder mainDexClassesBuilder;
@@ -52,7 +52,7 @@
*/
public MainDexListBuilder(Set<DexProgramClass> roots, DirectMappedDexApplication application) {
this.dexApplication = application;
- this.appInfo = new AppInfoWithSubtyping(dexApplication);
+ this.appInfo = new AppInfoWithClassHierarchy(dexApplication);
// Only consider program classes for the root set.
this.roots = SetUtils.mapIdentityHashSet(roots, DexProgramClass::getType);
mainDexClassesBuilder = MainDexClasses.builder(appInfo).addRoots(this.roots);
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java
index edb901b..52c3b4c 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexProgramClass;
@@ -83,7 +83,7 @@
}
Iterable<DexProgramClass> relevantCandidatesForRule(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
SubtypingInfo subtypingInfo,
Iterable<DexProgramClass> defaultValue) {
if (hasInheritanceClassName() && getInheritanceClassName().hasSpecificType()) {
diff --git a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
index 2065def..88c9fe2 100644
--- a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
+++ b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
@@ -8,7 +8,7 @@
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.graph.AppInfo;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.BottomUpClassHierarchyTraversal;
import com.android.tools.r8.graph.DexAnnotation;
@@ -77,7 +77,7 @@
public class RootSetBuilder {
- private final AppView<? extends AppInfoWithSubtyping> appView;
+ private final AppView<? extends AppInfoWithClassHierarchy> appView;
private final SubtypingInfo subtypingInfo;
private final DirectMappedDexApplication application;
private final Iterable<? extends ProguardConfigurationRule> rules;
@@ -114,7 +114,7 @@
private final Set<ProguardIfRule> ifRules = Sets.newIdentityHashSet();
public RootSetBuilder(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
DexApplication application,
Iterable<? extends ProguardConfigurationRule> rules) {
this.appView = appView;
@@ -124,7 +124,7 @@
this.options = appView.options();
}
- public RootSetBuilder(AppView<? extends AppInfoWithSubtyping> appView) {
+ public RootSetBuilder(AppView<? extends AppInfoWithClassHierarchy> appView) {
this(appView, appView.appInfo().app(), null);
}
@@ -604,7 +604,7 @@
}
private void markMatchingOverriddenMethods(
- AppInfoWithSubtyping appInfoWithSubtyping,
+ AppInfoWithClassHierarchy appInfoWithSubtyping,
DexClass clazz,
Collection<ProguardMemberRule> memberKeepRules,
ProguardConfigurationRule rule,
diff --git a/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java b/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java
index 9c18d3a..8cdce08 100644
--- a/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java
+++ b/src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java
@@ -6,7 +6,7 @@
import com.android.tools.r8.ResourceException;
import com.android.tools.r8.cf.code.CfInstruction;
import com.android.tools.r8.cf.code.CfPosition;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.CfCode;
import com.android.tools.r8.graph.Code;
@@ -261,7 +261,7 @@
}
public static ClassNameMapper run(
- AppView<AppInfoWithSubtyping> appView,
+ AppView<AppInfoWithClassHierarchy> appView,
DexApplication application,
AndroidApp inputApp,
NamingLens namingLens) {
@@ -436,7 +436,7 @@
}
private static boolean verifyMethodsAreKeptDirectlyOrIndirectly(
- AppView<AppInfoWithSubtyping> appView, List<DexEncodedMethod> methods) {
+ AppView<AppInfoWithClassHierarchy> appView, List<DexEncodedMethod> methods) {
if (appView.options().isGeneratingClassFiles()) {
return true;
}
diff --git a/src/test/java/com/android/tools/r8/R8UnreachableCodeTest.java b/src/test/java/com/android/tools/r8/R8UnreachableCodeTest.java
index 9cb139c..fd9259f 100644
--- a/src/test/java/com/android/tools/r8/R8UnreachableCodeTest.java
+++ b/src/test/java/com/android/tools/r8/R8UnreachableCodeTest.java
@@ -7,7 +7,7 @@
import static org.junit.Assert.assertEquals;
import com.android.tools.r8.dex.ApplicationReader;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexProgramClass;
@@ -44,7 +44,8 @@
DirectMappedDexApplication application =
new ApplicationReader(input, options, timing).read(executorService).toDirect();
IRConverter converter =
- new IRConverter(AppView.createForR8(new AppInfoWithSubtyping(application), options), null);
+ new IRConverter(
+ AppView.createForR8(new AppInfoWithClassHierarchy(application), options), null);
converter.optimize();
DexProgramClass clazz = application.classes().iterator().next();
assertEquals(4, clazz.directMethods().size());
diff --git a/src/test/java/com/android/tools/r8/TestBase.java b/src/test/java/com/android/tools/r8/TestBase.java
index f172bb12f..5e92d8b 100644
--- a/src/test/java/com/android/tools/r8/TestBase.java
+++ b/src/test/java/com/android/tools/r8/TestBase.java
@@ -22,7 +22,6 @@
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.graph.AppInfo;
import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
import com.android.tools.r8.graph.AppServices;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexApplication;
@@ -587,14 +586,14 @@
}
}
- protected static AppView<AppInfoWithSubtyping> computeAppViewWithSubtyping(AndroidApp app)
+ protected static AppView<AppInfoWithClassHierarchy> computeAppViewWithSubtyping(AndroidApp app)
throws Exception {
Timing timing = Timing.empty();
InternalOptions options = new InternalOptions();
DirectMappedDexApplication application =
new ApplicationReader(app, options, timing).read().toDirect();
- AppView<AppInfoWithSubtyping> appView =
- AppView.createForR8(new AppInfoWithSubtyping(application), options);
+ AppView<AppInfoWithClassHierarchy> appView =
+ AppView.createForR8(new AppInfoWithClassHierarchy(application), options);
appView.setAppServices(AppServices.builder(appView).build());
return appView;
}
@@ -616,7 +615,7 @@
Function<DexItemFactory, Collection<ProguardConfigurationRule>>
proguardConfigurationRulesGenerator)
throws Exception {
- AppView<AppInfoWithSubtyping> appView = computeAppViewWithSubtyping(app);
+ AppView<AppInfoWithClassHierarchy> appView = computeAppViewWithSubtyping(app);
// Run the tree shaker to compute an instance of AppInfoWithLiveness.
ExecutorService executor = Executors.newSingleThreadExecutor();
DexApplication application = appView.appInfo().app();
diff --git a/src/test/java/com/android/tools/r8/graph/DexTypeTest.java b/src/test/java/com/android/tools/r8/graph/DexTypeTest.java
index 1b5ffa9..014249b 100644
--- a/src/test/java/com/android/tools/r8/graph/DexTypeTest.java
+++ b/src/test/java/com/android/tools/r8/graph/DexTypeTest.java
@@ -19,7 +19,7 @@
public class DexTypeTest {
private static DexItemFactory factory;
- private static AppInfoWithSubtyping appInfo;
+ private static AppInfoWithClassHierarchy appInfo;
@BeforeClass
public static void makeAppInfo() throws Exception {
@@ -35,7 +35,7 @@
.read()
.toDirect();
factory = options.itemFactory;
- appInfo = new AppInfoWithSubtyping(application);
+ appInfo = new AppInfoWithClassHierarchy(application);
}
@Test
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreLookupTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreLookupTest.java
index 183a37e..e780b03 100644
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreLookupTest.java
+++ b/src/test/java/com/android/tools/r8/internal/R8GMSCoreLookupTest.java
@@ -13,7 +13,7 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.dex.ApplicationReader;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppServices;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexEncodedMethod;
@@ -41,7 +41,7 @@
private static final String APP_DIR = "third_party/gmscore/v5/";
private DirectMappedDexApplication program;
- private AppView<? extends AppInfoWithSubtyping> appView;
+ private AppView<? extends AppInfoWithClassHierarchy> appView;
private SubtypingInfo subtypingInfo;
@Before
@@ -60,12 +60,12 @@
.read(proguardMap, executorService)
.toDirect();
InternalOptions options = new InternalOptions();
- appView = AppView.createForR8(new AppInfoWithSubtyping(program), options);
+ appView = AppView.createForR8(new AppInfoWithClassHierarchy(program), options);
appView.setAppServices(AppServices.builder(appView).build());
subtypingInfo = new SubtypingInfo(program.allClasses(), program);
}
- private AppInfoWithSubtyping appInfo() {
+ private AppInfoWithClassHierarchy appInfo() {
return appView.appInfo();
}
diff --git a/src/test/java/com/android/tools/r8/ir/InlineTest.java b/src/test/java/com/android/tools/r8/ir/InlineTest.java
index a2b9dce..dc0585a 100644
--- a/src/test/java/com/android/tools/r8/ir/InlineTest.java
+++ b/src/test/java/com/android/tools/r8/ir/InlineTest.java
@@ -6,7 +6,7 @@
import static org.junit.Assert.assertEquals;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppServices;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexApplication;
@@ -47,8 +47,8 @@
MethodSubject method,
List<IRCode> additionalCode)
throws ExecutionException {
- AppView<AppInfoWithSubtyping> appView =
- AppView.createForR8(new AppInfoWithSubtyping(application.asDirect()), options);
+ AppView<AppInfoWithClassHierarchy> appView =
+ AppView.createForR8(new AppInfoWithClassHierarchy(application.asDirect()), options);
appView.setAppServices(AppServices.builder(appView).build());
ExecutorService executorService = ThreadUtils.getExecutorService(options);
appView.setRootSet(
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/fieldaccess/FieldBitAccessInfoTest.java b/src/test/java/com/android/tools/r8/ir/analysis/fieldaccess/FieldBitAccessInfoTest.java
index 43c8e17..bf823d4 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/fieldaccess/FieldBitAccessInfoTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/fieldaccess/FieldBitAccessInfoTest.java
@@ -16,7 +16,7 @@
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.dex.ApplicationReader;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexEncodedMethod;
@@ -80,7 +80,7 @@
@Test
public void testOptimizationInfo() throws Exception {
- AppView<AppInfoWithSubtyping> appView = buildApp();
+ AppView<AppInfoWithClassHierarchy> appView = buildApp();
OptimizationFeedbackMock feedback = new OptimizationFeedbackMock();
FieldBitAccessAnalysis fieldBitAccessAnalysis = new FieldBitAccessAnalysis();
FieldAccessAnalysis fieldAccessAnalysis =
@@ -114,7 +114,7 @@
}
}
- private AppView<AppInfoWithSubtyping> buildApp() throws IOException, ExecutionException {
+ private AppView<AppInfoWithClassHierarchy> buildApp() throws IOException, ExecutionException {
DexItemFactory dexItemFactory = new DexItemFactory();
InternalOptions options = new InternalOptions(dexItemFactory, new Reporter());
options.programConsumer =
@@ -133,7 +133,7 @@
timing)
.read()
.toDirect();
- return AppView.createForR8(new AppInfoWithSubtyping(application), options);
+ return AppView.createForR8(new AppInfoWithClassHierarchy(application), options);
}
private DexEncodedField uniqueFieldByName(DexProgramClass clazz, String name) {
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/type/NarrowingWithoutSubtypingTest.java b/src/test/java/com/android/tools/r8/ir/analysis/type/NarrowingWithoutSubtypingTest.java
index 2feb99a..6644af2 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/type/NarrowingWithoutSubtypingTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/type/NarrowingWithoutSubtypingTest.java
@@ -20,7 +20,7 @@
@Parameters(name = "{0}")
public static TestParametersCollection data() {
- return getTestParameters().withDexRuntimes().build();
+ return getTestParameters().withDexRuntimes().withAllApiLevels().build();
}
public NarrowingWithoutSubtypingTest(TestParameters parameters) {
@@ -36,7 +36,7 @@
options.testing.enableNarrowingChecksInD8 = true;
options.testing.noLocalsTableOnInput = true;
})
- .setMinApi(parameters.getRuntime())
+ .setMinApi(parameters.getApiLevel())
.compile()
.run(parameters.getRuntime(), TestClass.class)
.assertSuccessWithOutputLines("Hello world!");
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/type/TypeLatticeTest.java b/src/test/java/com/android/tools/r8/ir/analysis/type/TypeLatticeTest.java
index 5d2814c..cfe27c9 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/type/TypeLatticeTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/type/TypeLatticeTest.java
@@ -15,7 +15,7 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.dex.ApplicationReader;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexType;
@@ -39,7 +39,7 @@
private static final String INTERRUPT = "Ljava/io/InterruptedIOException;";
private static DexItemFactory factory;
- private static AppView<AppInfoWithSubtyping> appView;
+ private static AppView<AppInfoWithClassHierarchy> appView;
@BeforeClass
public static void makeAppInfo() throws Exception {
@@ -60,7 +60,7 @@
.read()
.toDirect();
factory = options.itemFactory;
- appView = AppView.createForR8(new AppInfoWithSubtyping(application), options);
+ appView = AppView.createForR8(new AppInfoWithClassHierarchy(application), options);
}
private TopTypeElement top() {
diff --git a/src/test/java/com/android/tools/r8/ir/conversion/PartialCallGraphTest.java b/src/test/java/com/android/tools/r8/ir/conversion/PartialCallGraphTest.java
index 1955c47..5f07b54 100644
--- a/src/test/java/com/android/tools/r8/ir/conversion/PartialCallGraphTest.java
+++ b/src/test/java/com/android/tools/r8/ir/conversion/PartialCallGraphTest.java
@@ -11,7 +11,7 @@
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.dex.ApplicationReader;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppServices;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
@@ -44,8 +44,8 @@
AndroidApp app = testForD8().addProgramClasses(TestClass.class).compile().app;
DirectMappedDexApplication application =
new ApplicationReader(app, options, timing).read().toDirect();
- AppView<AppInfoWithSubtyping> appView =
- AppView.createForR8(new AppInfoWithSubtyping(application), options);
+ AppView<AppInfoWithClassHierarchy> appView =
+ AppView.createForR8(new AppInfoWithClassHierarchy(application), options);
appView.setAppServices(AppServices.builder(appView).build());
ProguardConfigurationParser parser =
new ProguardConfigurationParser(appView.dexItemFactory(), options.reporter);
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/NonNullTrackerTestBase.java b/src/test/java/com/android/tools/r8/ir/optimize/NonNullTrackerTestBase.java
index 15456be..28ab813 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/NonNullTrackerTestBase.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/NonNullTrackerTestBase.java
@@ -6,7 +6,7 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.dex.ApplicationReader;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppServices;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DirectMappedDexApplication;
@@ -22,7 +22,8 @@
InternalOptions options = new InternalOptions();
DirectMappedDexApplication dexApplication =
new ApplicationReader(app, options, timing).read().toDirect();
- AppView<?> appView = AppView.createForD8(new AppInfoWithSubtyping(dexApplication), options);
+ AppView<?> appView =
+ AppView.createForD8(new AppInfoWithClassHierarchy(dexApplication), options);
appView.setAppServices(AppServices.builder(appView).build());
return appView;
}
diff --git a/src/test/java/com/android/tools/r8/ir/regalloc/RegisterMoveSchedulerTest.java b/src/test/java/com/android/tools/r8/ir/regalloc/RegisterMoveSchedulerTest.java
index 111338b..8ea5334 100644
--- a/src/test/java/com/android/tools/r8/ir/regalloc/RegisterMoveSchedulerTest.java
+++ b/src/test/java/com/android/tools/r8/ir/regalloc/RegisterMoveSchedulerTest.java
@@ -7,7 +7,7 @@
import com.android.tools.r8.errors.Unimplemented;
import com.android.tools.r8.graph.AppInfo;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexApplication;
import com.android.tools.r8.graph.DexField;
@@ -73,7 +73,7 @@
@Override
public void replaceCurrentInstructionWithThrowNull(
- AppView<? extends AppInfoWithSubtyping> appView,
+ AppView<? extends AppInfoWithClassHierarchy> appView,
IRCode code,
ListIterator<BasicBlock> blockIterator,
Set<BasicBlock> blocksToRemove,
diff --git a/src/test/java/com/android/tools/r8/naming/NamingTestBase.java b/src/test/java/com/android/tools/r8/naming/NamingTestBase.java
index f0b3c24..74bae45 100644
--- a/src/test/java/com/android/tools/r8/naming/NamingTestBase.java
+++ b/src/test/java/com/android/tools/r8/naming/NamingTestBase.java
@@ -5,7 +5,7 @@
import com.android.tools.r8.DexIndexedConsumer;
import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppServices;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexItemFactory;
@@ -66,8 +66,8 @@
ExecutorService executor = ThreadUtils.getExecutorService(1);
- AppView<AppInfoWithSubtyping> appView =
- AppView.createForR8(new AppInfoWithSubtyping(program), options);
+ AppView<AppInfoWithClassHierarchy> appView =
+ AppView.createForR8(new AppInfoWithClassHierarchy(program), options);
appView.setRootSet(
new RootSetBuilder(appView, program, configuration.getRules()).run(executor));
appView.setAppServices(AppServices.builder(appView).build());
diff --git a/src/test/java/com/android/tools/r8/resolution/ArrayTargetLookupTest.java b/src/test/java/com/android/tools/r8/resolution/ArrayTargetLookupTest.java
index 079a8f5..02cb64e 100644
--- a/src/test/java/com/android/tools/r8/resolution/ArrayTargetLookupTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/ArrayTargetLookupTest.java
@@ -10,7 +10,7 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.dex.ApplicationReader;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexType;
@@ -38,7 +38,7 @@
.build();
DirectMappedDexApplication application =
new ApplicationReader(app, options, timing).read().toDirect();
- AppInfoWithSubtyping appInfo = new AppInfoWithSubtyping(application);
+ AppInfoWithClassHierarchy appInfo = new AppInfoWithClassHierarchy(application);
DexItemFactory factory = options.itemFactory;
DexType fooType =
factory.createType(DescriptorUtils.javaTypeToDescriptor(Foo.class.getTypeName()));
diff --git a/src/test/java/com/android/tools/r8/resolution/virtualtargets/KeptTargetsIncompleteLookupTest.java b/src/test/java/com/android/tools/r8/resolution/virtualtargets/KeptTargetsIncompleteLookupTest.java
index b2e57b2..02c6e97 100644
--- a/src/test/java/com/android/tools/r8/resolution/virtualtargets/KeptTargetsIncompleteLookupTest.java
+++ b/src/test/java/com/android/tools/r8/resolution/virtualtargets/KeptTargetsIncompleteLookupTest.java
@@ -11,7 +11,7 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
-import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexProgramClass;
@@ -227,11 +227,11 @@
//
// ----- Program -----
// B extends A { } <-- initial
- AppView<AppInfoWithSubtyping> appView =
+ AppView<AppInfoWithClassHierarchy> appView =
computeAppViewWithSubtyping(
buildClasses(Collections.singletonList(B.class), Arrays.asList(A.class, I.class))
.build());
- AppInfoWithSubtyping appInfo = appView.appInfo();
+ AppInfoWithClassHierarchy appInfo = appView.appInfo();
DexMethod method = buildNullaryVoidMethod(B.class, "foo", appInfo.dexItemFactory());
ResolutionResult resolutionResult = appInfo.resolveMethod(method.holder, method);
DexType typeA = buildType(A.class, appInfo.dexItemFactory());