Deprecate TypeLatticeElement#isNull
Also, rename TypeLatticeElement#isConstantNull to isNullType
Bug: 72693244
Change-Id: Ie2a1159bd9b345f46fd5d37364f67fc1bc8c1fa3
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/type/ReferenceTypeLatticeElement.java b/src/main/java/com/android/tools/r8/ir/analysis/type/ReferenceTypeLatticeElement.java
index e7282e1..0db0ca4 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/type/ReferenceTypeLatticeElement.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/type/ReferenceTypeLatticeElement.java
@@ -43,13 +43,13 @@
}
@Override
- public boolean isNull() {
+ public boolean isNullType() {
return type == DexItemFactory.nullValueType;
}
@Override
public TypeLatticeElement asNullable() {
- assert isNull();
+ assert isNullType();
return this;
}
@@ -88,7 +88,7 @@
@Override
public int hashCode() {
- assert isNull();
+ assert isNullType();
return System.identityHashCode(this);
}
}
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/type/TypeLatticeElement.java b/src/main/java/com/android/tools/r8/ir/analysis/type/TypeLatticeElement.java
index b29cd31..ad8edd3 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/type/TypeLatticeElement.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/type/TypeLatticeElement.java
@@ -29,7 +29,6 @@
public static final ReferenceTypeLatticeElement NULL =
ReferenceTypeLatticeElement.getNullTypeLatticeElement();
-
// TODO(b/72693244): Switch to NullLatticeElement.
private final boolean isNullable;
@@ -42,7 +41,7 @@
}
public NullLatticeElement nullElement() {
- if (isNull()) {
+ if (isNullType()) {
return NullLatticeElement.definitelyNull();
}
if (!isNullable()) {
@@ -91,10 +90,10 @@
if (isTop() || other.isTop()) {
return TOP;
}
- if (isNull()) {
+ if (isNullType()) {
return other.asNullable();
}
- if (other.isNull()) {
+ if (other.isNullType()) {
return asNullable();
}
if (isPrimitive()) {
@@ -270,7 +269,7 @@
public boolean isPreciseType() {
return isArrayType()
|| isClassType()
- || isNull()
+ || isNullType()
|| isInt()
|| isFloat()
|| isLong()
@@ -286,21 +285,13 @@
}
/**
- * Should use {@link #isConstantNull()} or {@link #isDefinitelyNull()} instead.
- */
- @Deprecated
- public boolean isNull() {
- return false;
- }
-
- /**
* Determines if this type only includes null values that are defined by a const-number
* instruction in the same enclosing method.
*
* These null values can be assigned to any type.
*/
- public boolean isConstantNull() {
- return isNull();
+ public boolean isNullType() {
+ return false;
}
/**
diff --git a/src/main/java/com/android/tools/r8/ir/code/CheckCast.java b/src/main/java/com/android/tools/r8/ir/code/CheckCast.java
index c68baf9..596fdb8 100644
--- a/src/main/java/com/android/tools/r8/ir/code/CheckCast.java
+++ b/src/main/java/com/android/tools/r8/ir/code/CheckCast.java
@@ -148,7 +148,7 @@
assert inType.nullElement().lessThanOrEqual(outType.nullElement());
// Since we cannot remove the cast the in-value must be different from null.
- assert !inType.isNull();
+ assert !inType.isNullType();
// TODO(b/72693244): Consider checking equivalence. This requires that the types are always
// as precise as possible, though, meaning that almost all changes to the IR must be followed
diff --git a/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java b/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java
index 7a6a9a4..3976889 100644
--- a/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java
+++ b/src/main/java/com/android/tools/r8/ir/code/ConstNumber.java
@@ -302,7 +302,7 @@
assert super.verifyTypes(appInfo, graphLense);
assert !isZero()
|| outValue().getTypeLattice().isPrimitive()
- || outValue().getTypeLattice().isConstantNull();
+ || outValue().getTypeLattice().isNullType();
return true;
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/Throw.java b/src/main/java/com/android/tools/r8/ir/code/Throw.java
index c9b12f2..23bb76c 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Throw.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Throw.java
@@ -82,7 +82,7 @@
return true;
}
TypeLatticeElement exceptionType = exception().getTypeLattice();
- if (exceptionType.isConstantNull()) {
+ if (exceptionType.isNullType()) {
// throw null
return true;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/NonNullTracker.java b/src/main/java/com/android/tools/r8/ir/optimize/NonNullTracker.java
index 2094584..b417c48 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/NonNullTracker.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/NonNullTracker.java
@@ -343,7 +343,7 @@
// redundant
!knownToBeNonNullValue.isNeverNull()
// v <- non-null NULL ?!
- && !typeLattice.isConstantNull()
+ && !typeLattice.isNullType()
// v <- non-null known-to-be-non-null // redundant
&& typeLattice.isNullable()
// e.g., v <- non-null INT ?!
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/string/StringOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/string/StringOptimizer.java
index bd4f2b1..cdd85e4 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/string/StringOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/string/StringOptimizer.java
@@ -305,7 +305,7 @@
continue;
}
TypeLatticeElement inType = in.getTypeLattice();
- if (inType.isConstantNull()) {
+ if (inType.isNullType()) {
Value nullStringValue =
code.createValue(TypeLatticeElement.stringClassType(appInfo), invoke.getLocalInfo());
ConstString nullString = new ConstString(