Move calls of DexEncodedMethod constructors to create methods
This is the first step of refactoring DexEncodedMethod construction to
use builders.
Change-Id: I88e732756f4535d46329bc2562c0c4502834f99e
diff --git a/src/main/java/com/android/tools/r8/GenerateLintFiles.java b/src/main/java/com/android/tools/r8/GenerateLintFiles.java
index 2906011..8a6645c 100644
--- a/src/main/java/com/android/tools/r8/GenerateLintFiles.java
+++ b/src/main/java/com/android/tools/r8/GenerateLintFiles.java
@@ -153,7 +153,7 @@
code = buildEmptyThrowingCfCode(method.getReference());
}
DexEncodedMethod throwingMethod =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
method.getReference(),
method.accessFlags,
MethodTypeSignature.noSignature(),
diff --git a/src/main/java/com/android/tools/r8/dex/DexParser.java b/src/main/java/com/android/tools/r8/dex/DexParser.java
index b279333..9a0bba5 100644
--- a/src/main/java/com/android/tools/r8/dex/DexParser.java
+++ b/src/main/java/com/android/tools/r8/dex/DexParser.java
@@ -696,7 +696,7 @@
}
}
methods[i] =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
method,
accessFlags,
methodTypeSignature,
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 6cbb223..3708bd2 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -145,7 +145,12 @@
MethodTypeSignature.noSignature(),
DexAnnotationSet.empty(),
ParameterAnnotationsList.empty(),
- null);
+ null,
+ false,
+ null,
+ AndroidApiLevel.UNKNOWN,
+ AndroidApiLevel.UNKNOWN,
+ false);
public static final Int2ReferenceMap<DebugLocalInfo> NO_PARAMETER_INFO =
new Int2ReferenceArrayMap<>(0);
@@ -222,73 +227,7 @@
obsolete = false;
}
- public DexEncodedMethod(
- DexMethod method,
- MethodAccessFlags accessFlags,
- MethodTypeSignature genericSignature,
- DexAnnotationSet annotations,
- ParameterAnnotationsList parameterAnnotationsList,
- Code code) {
- this(
- method,
- accessFlags,
- genericSignature,
- annotations,
- parameterAnnotationsList,
- code,
- false,
- null,
- AndroidApiLevel.UNKNOWN,
- AndroidApiLevel.UNKNOWN);
- }
-
- public DexEncodedMethod(
- DexMethod method,
- MethodAccessFlags accessFlags,
- MethodTypeSignature genericSignature,
- DexAnnotationSet annotations,
- ParameterAnnotationsList parameterAnnotationsList,
- Code code,
- boolean d8R8Synthesized) {
- this(
- method,
- accessFlags,
- genericSignature,
- annotations,
- parameterAnnotationsList,
- code,
- d8R8Synthesized,
- null,
- AndroidApiLevel.UNKNOWN,
- AndroidApiLevel.UNKNOWN);
- }
-
- public DexEncodedMethod(
- DexMethod method,
- MethodAccessFlags accessFlags,
- MethodTypeSignature genericSignature,
- DexAnnotationSet annotations,
- ParameterAnnotationsList parameterAnnotationsList,
- Code code,
- boolean d8R8Synthesized,
- CfVersion classFileVersion,
- AndroidApiLevel apiLevelForDefinition,
- AndroidApiLevel apiLevelForCode) {
- this(
- method,
- accessFlags,
- genericSignature,
- annotations,
- parameterAnnotationsList,
- code,
- d8R8Synthesized,
- classFileVersion,
- apiLevelForDefinition,
- apiLevelForCode,
- false);
- }
-
- public DexEncodedMethod(
+ private DexEncodedMethod(
DexMethod method,
MethodAccessFlags accessFlags,
MethodTypeSignature genericSignature,
@@ -1316,7 +1255,7 @@
// Some debuggers (like IntelliJ) automatically skip synthetic methods on single step.
newFlags.setSynthetic();
newFlags.unsetAbstract();
- return new DexEncodedMethod(
+ return DexEncodedMethod.create(
newMethod,
newFlags,
MethodTypeSignature.noSignature(),
@@ -1469,6 +1408,100 @@
this.genericSignature = MethodTypeSignature.noSignature();
}
+ public static DexEncodedMethod create(
+ DexMethod method,
+ MethodAccessFlags accessFlags,
+ MethodTypeSignature genericSignature,
+ DexAnnotationSet annotations,
+ ParameterAnnotationsList parameterAnnotationsList,
+ Code code) {
+ return DexEncodedMethod.create(
+ method,
+ accessFlags,
+ genericSignature,
+ annotations,
+ parameterAnnotationsList,
+ code,
+ false,
+ null,
+ AndroidApiLevel.UNKNOWN,
+ AndroidApiLevel.UNKNOWN,
+ false);
+ }
+
+ public static DexEncodedMethod create(
+ DexMethod method,
+ MethodAccessFlags accessFlags,
+ MethodTypeSignature genericSignature,
+ DexAnnotationSet annotations,
+ ParameterAnnotationsList parameterAnnotationsList,
+ Code code,
+ boolean d8R8Synthesized) {
+ return DexEncodedMethod.create(
+ method,
+ accessFlags,
+ genericSignature,
+ annotations,
+ parameterAnnotationsList,
+ code,
+ d8R8Synthesized,
+ null,
+ AndroidApiLevel.UNKNOWN,
+ AndroidApiLevel.UNKNOWN,
+ false);
+ }
+
+ public static DexEncodedMethod create(
+ DexMethod method,
+ MethodAccessFlags accessFlags,
+ MethodTypeSignature genericSignature,
+ DexAnnotationSet annotations,
+ ParameterAnnotationsList parameterAnnotationsList,
+ Code code,
+ boolean d8R8Synthesized,
+ CfVersion classFileVersion,
+ AndroidApiLevel apiLevelForDefinition,
+ AndroidApiLevel apiLevelForCode) {
+ return DexEncodedMethod.create(
+ method,
+ accessFlags,
+ genericSignature,
+ annotations,
+ parameterAnnotationsList,
+ code,
+ d8R8Synthesized,
+ classFileVersion,
+ apiLevelForDefinition,
+ apiLevelForCode,
+ false);
+ }
+
+ public static DexEncodedMethod create(
+ DexMethod method,
+ MethodAccessFlags accessFlags,
+ MethodTypeSignature genericSignature,
+ DexAnnotationSet annotations,
+ ParameterAnnotationsList parameterAnnotationsList,
+ Code code,
+ boolean d8R8Synthesized,
+ CfVersion classFileVersion,
+ AndroidApiLevel apiLevelForDefinition,
+ AndroidApiLevel apiLevelForCode,
+ boolean deprecated) {
+ return new DexEncodedMethod(
+ method,
+ accessFlags,
+ genericSignature,
+ annotations,
+ parameterAnnotationsList,
+ code,
+ d8R8Synthesized,
+ classFileVersion,
+ apiLevelForDefinition,
+ apiLevelForCode,
+ deprecated);
+ }
+
private static Builder syntheticBuilder(DexEncodedMethod from) {
return new Builder(from, true);
}
@@ -1709,7 +1742,7 @@
assert apiLevelForDefinition != null;
assert apiLevelForCode != null;
DexEncodedMethod result =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
method,
accessFlags,
genericSignature,
diff --git a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
index 2f052aa..0242f96 100644
--- a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
+++ b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
@@ -902,7 +902,7 @@
parent.application.getFactory()));
}
DexEncodedMethod dexMethod =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
method,
flags,
genericSignature,
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
index 43a2c8a..b9a9fb3 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
@@ -131,7 +131,7 @@
AndroidApiLevel apiReferenceLevel = classInitializerMerger.getApiReferenceLevel(appView);
DexEncodedMethod definition =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
newMethodReference,
MethodAccessFlags.createForClassInitializer(),
MethodTypeSignature.noSignature(),
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/InstanceInitializerMerger.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/InstanceInitializerMerger.java
index d6ae971..d8a2a04 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/InstanceInitializerMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/InstanceInitializerMerger.java
@@ -362,7 +362,7 @@
DexEncodedMethod representativeMethod = representative.getDefinition();
DexEncodedMethod newInstanceInitializer =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
newMethodReference,
getNewAccessFlags(),
MethodTypeSignature.noSignature(),
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/VirtualMethodMerger.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/VirtualMethodMerger.java
index be6a5a2..9251913 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/VirtualMethodMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/VirtualMethodMerger.java
@@ -278,7 +278,7 @@
bridgeMethodReference,
appView.dexItemFactory());
DexEncodedMethod newMethod =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
newMethodReference,
getAccessFlags(),
MethodTypeSignature.noSignature(),
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java b/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java
index 5760bd2..ee37c25 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java
@@ -164,7 +164,7 @@
.setVirtualTarget(methodReference, methodHolder.isInterface())
.setCastResult();
DexEncodedMethod newVirtualMethod =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
newMethod,
newAccessFlags,
methodDefinition.getGenericSignature(),
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
index e8bdbb9..d2a80bf 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
@@ -159,7 +159,7 @@
// Synthesize main method.
methods.add(
- new DexEncodedMethod(
+ DexEncodedMethod.create(
mainMethod,
MethodAccessFlags.fromSharedAccessFlags(
Constants.ACC_PUBLIC | Constants.ACC_FINAL, false),
@@ -174,7 +174,7 @@
DexMethod bridgeMethod =
appView.dexItemFactory().createMethod(type, bridgeProto, descriptor.name);
methods.add(
- new DexEncodedMethod(
+ DexEncodedMethod.create(
bridgeMethod,
MethodAccessFlags.fromSharedAccessFlags(
Constants.ACC_PUBLIC
@@ -198,7 +198,7 @@
// Constructor.
methods.add(
- new DexEncodedMethod(
+ DexEncodedMethod.create(
constructor,
MethodAccessFlags.fromSharedAccessFlags(
(stateless ? Constants.ACC_PRIVATE : Constants.ACC_PUBLIC)
@@ -213,7 +213,7 @@
// Class constructor for stateless lambda classes.
if (stateless) {
methods.add(
- new DexEncodedMethod(
+ DexEncodedMethod.create(
classConstructor,
MethodAccessFlags.fromSharedAccessFlags(
Constants.ACC_SYNTHETIC | Constants.ACC_STATIC, true),
@@ -579,7 +579,7 @@
// Always make the method public to provide access.
newAccessFlags.setPublic();
DexEncodedMethod newMethod =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
callTarget,
newAccessFlags,
encodedMethod.getGenericSignature(),
@@ -662,7 +662,7 @@
MethodAccessFlags newAccessFlags = encodedMethod.accessFlags.copy();
newAccessFlags.unsetPrivate();
DexEncodedMethod newMethod =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
callTarget,
newAccessFlags,
encodedMethod.getGenericSignature(),
@@ -726,7 +726,7 @@
ProgramMethod accessorMethod =
new ProgramMethod(
accessorClass,
- new DexEncodedMethod(
+ DexEncodedMethod.create(
callTarget,
MethodAccessFlags.createPublicStaticSynthetic(),
MethodTypeSignature.noSignature(),
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterLibraryTypeSynthesizor.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterLibraryTypeSynthesizor.java
index 8c5a747..618a528 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterLibraryTypeSynthesizor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryRetargeterLibraryTypeSynthesizor.java
@@ -140,7 +140,7 @@
newClass,
ignore -> new TreeSet<>(Comparator.comparing(DexEncodedMethod::getReference)))
.add(
- new DexEncodedMethod(
+ DexEncodedMethod.create(
retargetMethod,
MethodAccessFlags.fromCfAccessFlags(
Constants.ACC_PUBLIC | Constants.ACC_STATIC, false),
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
index aa69845..b41acbf 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
@@ -561,7 +561,7 @@
// TODO(b/146114533): Fix inlining in synthetic methods and remove unsetBridge.
newFlags.unsetBridge();
newFlags.setSynthetic();
- return new DexEncodedMethod(
+ return DexEncodedMethod.create(
methodToInstall,
newFlags,
MethodTypeSignature.noSignature(),
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java
index 97d890c..226a377 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java
@@ -800,7 +800,7 @@
MethodAccessFlags accessFlags = MethodAccessFlags.builder().setPublic().build();
DexMethod newMethod = method.withHolder(clazz.getType(), dexItemFactory);
DexEncodedMethod newEncodedMethod =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
newMethod,
accessFlags,
MethodTypeSignature.noSignature(),
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/records/RecordRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/records/RecordRewriter.java
index 7c26d30..fb91122 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/records/RecordRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/records/RecordRewriter.java
@@ -289,7 +289,7 @@
MethodAccessFlags.fromSharedAccessFlags(
Constants.ACC_SYNTHETIC | Constants.ACC_PRIVATE, false);
DexEncodedMethod encodedMethod =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
method,
methodAccessFlags,
MethodTypeSignature.noSignature(),
@@ -589,7 +589,7 @@
MethodAccessFlags.fromSharedAccessFlags(
Constants.ACC_SYNTHETIC | Constants.ACC_PROTECTED, true);
DexEncodedMethod init =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
factory.recordMembers.init,
methodAccessFlags,
MethodTypeSignature.noSignature(),
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java
index 9614ede..c92fc24 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java
@@ -248,7 +248,7 @@
private DexEncodedMethod createClassInitializer(
DexType sharedUtilityClassType, DexEncodedField valuesField) {
- return new DexEncodedMethod(
+ return DexEncodedMethod.create(
dexItemFactory.createClassInitializer(sharedUtilityClassType),
MethodAccessFlags.createForClassInitializer(),
MethodTypeSignature.noSignature(),
@@ -292,7 +292,7 @@
private DexEncodedMethod createValuesMethod(
DexType sharedUtilityClassType, DexEncodedField valuesField) {
DexEncodedMethod valuesMethod =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
dexItemFactory.createMethod(
sharedUtilityClassType,
dexItemFactory.createProto(dexItemFactory.intArrayType, dexItemFactory.intType),
diff --git a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
index 27d25bb..2ee8ce5 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -1441,7 +1441,7 @@
synthesizedBridges.add(code);
DexEncodedMethod bridge =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
newMethod,
accessFlags,
MethodTypeSignature.noSignature(),
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
index 196af3b..caec40e 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
@@ -108,7 +108,7 @@
DexMethod methodSignature = getMethodSignature();
MethodAccessFlags accessFlags = getAccessFlags();
DexEncodedMethod method =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
methodSignature,
accessFlags,
genericSignature,
diff --git a/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java b/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java
index e5b4c08..4517cef 100644
--- a/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java
+++ b/src/test/java/com/android/tools/r8/dex/JumboStringProcessing.java
@@ -155,7 +155,7 @@
DexCode code = new DexCode(1, 0, 0, instructions, new Try[0], new TryHandler[0], null);
MethodAccessFlags flags = MethodAccessFlags.fromSharedAccessFlags(Constants.ACC_PUBLIC, false);
DexEncodedMethod method =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
null,
flags,
MethodTypeSignature.noSignature(),
diff --git a/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java b/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java
index 4e41e64..4b8eef2 100644
--- a/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java
+++ b/src/test/java/com/android/tools/r8/ir/conversion/CallGraphTestBase.java
@@ -53,7 +53,7 @@
ProgramMethod method =
new ProgramMethod(
clazz,
- new DexEncodedMethod(
+ DexEncodedMethod.create(
signature,
MethodAccessFlags.fromDexAccessFlags(0),
MethodTypeSignature.noSignature(),
diff --git a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
index 0005549..68b1f25 100644
--- a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
+++ b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
@@ -856,7 +856,7 @@
new SynthesizedCode(
(ignored, callerPosition) -> new ReturnVoidCode(voidReturnMethod, callerPosition));
DexEncodedMethod method =
- new DexEncodedMethod(
+ DexEncodedMethod.create(
voidReturnMethod,
access,
MethodTypeSignature.noSignature(),