Rename flags on IRCode to indicate that they are not necessarily complete
Change-Id: I052553c900cbe53b3f8bf7fa35932d6440e2f102
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 5a3a10a..98bb2e7 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
@@ -106,10 +106,10 @@
private boolean allThrowingInstructionsHavePositions;
// TODO(b/122257895): Update OptimizationInfo to capture instruction kinds of interest.
- public final boolean hasDebugPositions;
- public boolean hasConstString;
- public boolean hasStringSwitch;
- public final boolean hasMonitorInstruction;
+ public final boolean mayHaveDebugPositions;
+ public boolean mayHaveConstString;
+ public boolean mayHaveStringSwitch;
+ public final boolean mayHaveMonitorInstruction;
private final InternalOptions options;
@@ -120,27 +120,27 @@
DexEncodedMethod method,
LinkedList<BasicBlock> blocks,
ValueNumberGenerator valueNumberGenerator,
- boolean hasDebugPositions,
- boolean hasMonitorInstruction,
- boolean hasConstString,
+ boolean mayHaveDebugPositions,
+ boolean mayHaveMonitorInstruction,
+ boolean mayHaveConstString,
Origin origin) {
assert options != null;
this.options = options;
this.method = method;
this.blocks = blocks;
this.valueNumberGenerator = valueNumberGenerator;
- this.hasDebugPositions = hasDebugPositions;
- this.hasMonitorInstruction = hasMonitorInstruction;
- this.hasConstString = hasConstString;
+ this.mayHaveDebugPositions = mayHaveDebugPositions;
+ this.mayHaveMonitorInstruction = mayHaveMonitorInstruction;
+ this.mayHaveConstString = mayHaveConstString;
this.origin = origin;
// TODO(zerny): Remove or update this property now that all instructions have positions.
allThrowingInstructionsHavePositions = computeAllThrowingInstructionsHavePositions();
}
public void mergeMetadataFromInlinee(IRCode inlinee) {
- assert !inlinee.hasMonitorInstruction;
- this.hasConstString |= inlinee.hasConstString;
- this.hasStringSwitch |= inlinee.hasStringSwitch;
+ assert !inlinee.mayHaveMonitorInstruction;
+ this.mayHaveConstString |= inlinee.mayHaveConstString;
+ this.mayHaveStringSwitch |= inlinee.mayHaveStringSwitch;
}
public BasicBlock entryBlock() {
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
index 5763523..77b3058 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
@@ -334,7 +334,7 @@
// After this pass all remaining debug positions mark places where we must ensure a materializing
// instruction, eg, for two successive lines without intermediate instructions.
public static void removeRedundantDebugPositions(IRCode code) {
- if (!code.hasDebugPositions) {
+ if (!code.mayHaveDebugPositions) {
return;
}
// Current position known to have a materializing instruction associated with it.
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchConverter.java
index dde13fa..e208ec3 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchConverter.java
@@ -113,7 +113,7 @@
}
}
if (changed) {
- code.hasStringSwitch = true;
+ code.mayHaveStringSwitch = true;
code.removeAllTrivialPhis();
code.removeUnreachableBlocks();
}
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchRemover.java b/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchRemover.java
index 4cb14cc..9efba14 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchRemover.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/StringSwitchRemover.java
@@ -47,7 +47,7 @@
}
void run(DexEncodedMethod method, IRCode code) {
- if (!code.hasStringSwitch) {
+ if (!code.mayHaveStringSwitch) {
assert Streams.stream(code.instructions()).noneMatch(Instruction::isStringSwitch);
return;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/ConstantCanonicalizer.java b/src/main/java/com/android/tools/r8/ir/optimize/ConstantCanonicalizer.java
index acfce6e..0f6bddd 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/ConstantCanonicalizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/ConstantCanonicalizer.java
@@ -120,7 +120,7 @@
// That could lead to unbalanced locking and could lead to situations where OOM exceptions
// could leave a synchronized method without unlocking the monitor.
if ((current.isConstString() || current.isDexItemBasedConstString())
- && code.hasMonitorInstruction) {
+ && code.mayHaveMonitorInstruction) {
continue;
}
// Constants with local info must not be canonicalized and must be filtered.
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 de33a67..eac9284 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
@@ -63,7 +63,7 @@
// String String#substring(int)
// String String#substring(int, int)
public void computeTrivialOperationsOnConstString(IRCode code) {
- if (!code.hasConstString) {
+ if (!code.mayHaveConstString) {
return;
}
InstructionIterator it = code.instructionIterator();
diff --git a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
index c3aa1cd..4ce71a9 100644
--- a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
+++ b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
@@ -92,7 +92,7 @@
public void decoupleIdentifierNameStringsInBlocks(
DexEncodedMethod method, IRCode code, Set<BasicBlock> blocks) {
- if (!code.hasConstString) {
+ if (!code.mayHaveConstString) {
return;
}
ListIterator<BasicBlock> blockIterator = code.listIterator();