Unify DexItemFactory usage in AnalysisTestBase.
Change-Id: Ibe43664efe33dca3bdce72fea79fab149b685e03
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java
index 8d3942f..3ba841d 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java
@@ -95,26 +95,6 @@
private final Object2IntMap<Integer> histogramOfLengthOfPartialAppendChains;
private final Object2IntMap<Integer> histogramOfLengthOfPartialResult;
- @VisibleForTesting
- StringBuilderOptimizer(
- AppView<? extends AppInfo> appView, StringBuilderOptimizationConfiguration configuration) {
- this.appView = appView;
- this.factory = appView.dexItemFactory();
- this.throwingInfo = ThrowingInfo.defaultForConstString(appView.options());
- this.optimizationConfiguration = configuration;
- if (Log.ENABLED) {
- histogramOfLengthOfAppendChains = new Object2IntArrayMap<>();
- histogramOfLengthOfEndResult = new Object2IntArrayMap<>();
- histogramOfLengthOfPartialAppendChains = new Object2IntArrayMap<>();
- histogramOfLengthOfPartialResult = new Object2IntArrayMap<>();
- } else {
- histogramOfLengthOfAppendChains = null;
- histogramOfLengthOfEndResult = null;
- histogramOfLengthOfPartialAppendChains = null;
- histogramOfLengthOfPartialResult = null;
- }
- }
-
public StringBuilderOptimizer(AppView<? extends AppInfo> appView) {
this.appView = appView;
this.factory = appView.dexItemFactory();
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/AnalysisTestBase.java b/src/test/java/com/android/tools/r8/ir/analysis/AnalysisTestBase.java
index 497333c..c7e8270 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/AnalysisTestBase.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/AnalysisTestBase.java
@@ -71,10 +71,10 @@
appView = AppView.createForR8(new AppInfoWithSubtyping(application), options);
}
- public void buildAndCheckIR(String methodName, Consumer<IRCode> irInspector) throws Exception {
- CodeInspector inspector = new CodeInspector(app);
+ public void buildAndCheckIR(String methodName, Consumer<IRCode> irInspector) {
+ CodeInspector inspector = new CodeInspector(appView.appInfo().app());
MethodSubject methodSubject = inspector.clazz(className).uniqueMethodWithName(methodName);
- irInspector.accept(methodSubject.buildIR());
+ irInspector.accept(methodSubject.buildIR(appView.dexItemFactory()));
}
@SuppressWarnings("unchecked")
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizerAnalysisTest.java b/src/test/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizerAnalysisTest.java
index a77978c..b21941a 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizerAnalysisTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizerAnalysisTest.java
@@ -9,12 +9,9 @@
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.ToolHelper.DexVm;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.ir.analysis.AnalysisTestBase;
import com.android.tools.r8.ir.code.IRCode;
import com.android.tools.r8.ir.code.Instruction;
-import com.android.tools.r8.ir.code.InvokeMethod;
import com.android.tools.r8.ir.code.Value;
import com.android.tools.r8.ir.optimize.string.StringBuilderOptimizer.BuilderState;
import java.util.Map;
@@ -219,9 +216,7 @@
static Consumer<IRCode> checkOptimizerStates(
AppView<?> appView, Consumer<StringBuilderOptimizer> optimizerConsumer) {
return code -> {
- StringBuilderOptimizer optimizer =
- new StringBuilderOptimizer(
- appView, new StringBuilderOptimizationConfigurationForTesting(appView));
+ StringBuilderOptimizer optimizer = new StringBuilderOptimizer(appView);
optimizer.computeTrivialStringConcatenation(code);
optimizerConsumer.accept(optimizer);
};
@@ -243,70 +238,4 @@
}
assertEquals(expectToSeeToString, metToString);
}
-
- static class StringBuilderOptimizationConfigurationForTesting
- implements StringBuilderOptimizationConfiguration {
- AppView<?> appView;
-
- StringBuilderOptimizationConfigurationForTesting(AppView<?> appView) {
- this.appView = appView;
- }
-
- @Override
- public boolean isBuilderType(DexType type) {
- String descriptor = type.toDescriptorString();
- return descriptor.equals(appView.dexItemFactory().stringBuilderType.toDescriptorString())
- || descriptor.equals(appView.dexItemFactory().stringBufferType.toDescriptorString());
- }
-
- @Override
- public boolean isBuilderInit(DexMethod method, DexType builderType) {
- return builderType == method.holder
- && method.name.toString().equals("<init>");
- }
-
- @Override
- public boolean isBuilderInit(DexMethod method) {
- return isBuilderType(method.holder)
- && method.name.toString().equals("<init>");
- }
-
- @Override
- public boolean isBuilderInitWithInitialValue(InvokeMethod invoke) {
- return isBuilderInit(invoke.getInvokedMethod())
- && invoke.inValues().size() == 2
- && !invoke.inValues().get(1).getTypeLattice().isPrimitive();
- }
-
- @Override
- public boolean isAppendMethod(DexMethod method) {
- return isBuilderType(method.holder) && method.name.toString().equals("append");
- }
-
- @Override
- public boolean isSupportedAppendMethod(InvokeMethod invoke) {
- DexMethod invokedMethod = invoke.getInvokedMethod();
- assert isAppendMethod(invokedMethod);
- if (invoke.inValues().size() > 2) {
- return false;
- }
- for (DexType argType : invokedMethod.proto.parameters.values) {
- if (!canHandleArgumentType(argType)) {
- return false;
- }
- }
- return true;
- }
-
- @Override
- public boolean isToStringMethod(DexMethod method) {
- return isBuilderType(method.holder) && method.name.toString().equals("toString");
- }
-
- private boolean canHandleArgumentType(DexType argType) {
- String descriptor = argType.toDescriptorString();
- return descriptor.equals(appView.dexItemFactory().stringType.toDescriptorString())
- || descriptor.equals(appView.dexItemFactory().charSequenceType.toDescriptorString());
- }
- }
}