Repackage sparse conditional constant propagation.
...ir.analysis is way too general. For future analyses, it might be
better to use anlysis-specific package names. FYI, I'm about to steal
go/r8g/4140 and package it as ...ir.analysis.type
I thought of re-using Bottom/Top/LatticeElement, along with meet(),
but we can defer that decision until there are more and more analyses
that share the same computation logic, e.g., local work-list based, etc.
Bug: 69964136
Change-Id: I98dcfff528f2e1df9c7ae416ffd4095992e50e62
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/Bottom.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/Bottom.java
similarity index 92%
rename from src/main/java/com/android/tools/r8/ir/analysis/Bottom.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/Bottom.java
index e384d1a..2f6e36e 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/Bottom.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/Bottom.java
@@ -1,7 +1,7 @@
// 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.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
public class Bottom extends LatticeElement {
private static final Bottom INSTANCE = new Bottom();
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/ConstLatticeElement.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/ConstLatticeElement.java
similarity index 96%
rename from src/main/java/com/android/tools/r8/ir/analysis/ConstLatticeElement.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/ConstLatticeElement.java
index 0a63bda..33bff86 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/ConstLatticeElement.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/ConstLatticeElement.java
@@ -1,7 +1,7 @@
// 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.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
import com.android.tools.r8.ir.code.ConstNumber;
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/ConstRangeLatticeElement.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/ConstRangeLatticeElement.java
similarity index 95%
rename from src/main/java/com/android/tools/r8/ir/analysis/ConstRangeLatticeElement.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/ConstRangeLatticeElement.java
index c1d1b3b..0e2d511 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/ConstRangeLatticeElement.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/ConstRangeLatticeElement.java
@@ -1,7 +1,7 @@
// 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.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
import com.android.tools.r8.ir.code.Value;
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/LatticeElement.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/LatticeElement.java
similarity index 92%
rename from src/main/java/com/android/tools/r8/ir/analysis/LatticeElement.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/LatticeElement.java
index fc58d8b..320425f 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/LatticeElement.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/LatticeElement.java
@@ -1,7 +1,7 @@
// 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.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
abstract public class LatticeElement {
abstract public LatticeElement meet(LatticeElement other);
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/SparseConditionalConstantPropagation.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
similarity index 99%
rename from src/main/java/com/android/tools/r8/ir/analysis/SparseConditionalConstantPropagation.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
index 7cacbc9..3dc84bb 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/SparseConditionalConstantPropagation.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
@@ -1,7 +1,7 @@
// 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.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
import com.android.tools.r8.ir.code.BasicBlock;
import com.android.tools.r8.ir.code.ConstNumber;
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/Top.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/Top.java
similarity index 92%
rename from src/main/java/com/android/tools/r8/ir/analysis/Top.java
rename to src/main/java/com/android/tools/r8/ir/analysis/constant/Top.java
index 8610c64..4e08a73 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/Top.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/Top.java
@@ -1,7 +1,7 @@
// 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.ir.analysis;
+package com.android.tools.r8.ir.analysis.constant;
public class Top extends LatticeElement {
private static final Top INSTANCE = new Top();
diff --git a/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java b/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java
index daf83d3..5248ea4 100644
--- a/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java
+++ b/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java
@@ -1,14 +1,13 @@
// Copyright (c) 2016, 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.ir.code;
import com.android.tools.r8.code.Instruction;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
import com.android.tools.r8.ir.conversion.DexBuilder;
import java.util.Map;
diff --git a/src/main/java/com/android/tools/r8/ir/code/Cmp.java b/src/main/java/com/android/tools/r8/ir/code/Cmp.java
index c66d3f0..eb22446 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Cmp.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Cmp.java
@@ -1,7 +1,6 @@
// Copyright (c) 2016, 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.ir.code;
import com.android.tools.r8.code.CmpLong;
@@ -11,9 +10,9 @@
import com.android.tools.r8.code.CmplFloat;
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
import com.android.tools.r8.ir.conversion.DexBuilder;
import com.android.tools.r8.utils.LongInterval;
import com.android.tools.r8.utils.StringUtils;
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 1411ccf..b9c5aaf 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
@@ -17,9 +17,9 @@
import com.android.tools.r8.code.ConstWideHigh16;
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
import com.android.tools.r8.ir.conversion.CfBuilder;
import com.android.tools.r8.ir.conversion.DexBuilder;
import com.android.tools.r8.utils.NumberUtils;
diff --git a/src/main/java/com/android/tools/r8/ir/code/Div.java b/src/main/java/com/android/tools/r8/ir/code/Div.java
index 2ca114f..bb74883 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Div.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Div.java
@@ -1,7 +1,6 @@
// Copyright (c) 2016, 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.ir.code;
import com.android.tools.r8.code.DivDouble;
@@ -15,8 +14,8 @@
import com.android.tools.r8.code.DivLong;
import com.android.tools.r8.code.DivLong2Addr;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
import java.util.Map;
import org.objectweb.asm.Opcodes;
diff --git a/src/main/java/com/android/tools/r8/ir/code/Instruction.java b/src/main/java/com/android/tools/r8/ir/code/Instruction.java
index 2b23103..17f4536 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Instruction.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Instruction.java
@@ -10,9 +10,9 @@
import com.android.tools.r8.graph.AppInfoWithSubtyping;
import com.android.tools.r8.graph.DebugLocalInfo;
import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstRangeLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstRangeLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
import com.android.tools.r8.ir.conversion.CfBuilder;
import com.android.tools.r8.ir.conversion.DexBuilder;
import com.android.tools.r8.ir.optimize.Inliner.Constraint;
diff --git a/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java b/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java
index c90b759..456fe62 100644
--- a/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java
+++ b/src/main/java/com/android/tools/r8/ir/code/LogicalBinop.java
@@ -5,9 +5,9 @@
import com.android.tools.r8.code.Instruction;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
import com.android.tools.r8.ir.conversion.DexBuilder;
import java.util.Map;
diff --git a/src/main/java/com/android/tools/r8/ir/code/Neg.java b/src/main/java/com/android/tools/r8/ir/code/Neg.java
index ac1e2ee..1103700 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Neg.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Neg.java
@@ -8,9 +8,9 @@
import com.android.tools.r8.code.NegInt;
import com.android.tools.r8.code.NegLong;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
import com.android.tools.r8.ir.conversion.DexBuilder;
import java.util.Map;
import org.objectweb.asm.Opcodes;
diff --git a/src/main/java/com/android/tools/r8/ir/code/Not.java b/src/main/java/com/android/tools/r8/ir/code/Not.java
index ca86532..74df329 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Not.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Not.java
@@ -9,9 +9,9 @@
import com.android.tools.r8.code.NotInt;
import com.android.tools.r8.code.NotLong;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.ConstLatticeElement;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.ConstLatticeElement;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
import com.android.tools.r8.ir.conversion.CfBuilder;
import com.android.tools.r8.ir.conversion.DexBuilder;
import java.util.Map;
diff --git a/src/main/java/com/android/tools/r8/ir/code/Rem.java b/src/main/java/com/android/tools/r8/ir/code/Rem.java
index 7ba40b5..3672eda 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Rem.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Rem.java
@@ -1,7 +1,6 @@
// Copyright (c) 2016, 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.ir.code;
import com.android.tools.r8.code.RemDouble;
@@ -15,8 +14,8 @@
import com.android.tools.r8.code.RemLong;
import com.android.tools.r8.code.RemLong2Addr;
import com.android.tools.r8.errors.Unreachable;
-import com.android.tools.r8.ir.analysis.Bottom;
-import com.android.tools.r8.ir.analysis.LatticeElement;
+import com.android.tools.r8.ir.analysis.constant.Bottom;
+import com.android.tools.r8.ir.analysis.constant.LatticeElement;
import java.util.Map;
import org.objectweb.asm.Opcodes;
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 342de51..7ab9696 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -21,7 +21,7 @@
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.GraphLense;
-import com.android.tools.r8.ir.analysis.SparseConditionalConstantPropagation;
+import com.android.tools.r8.ir.analysis.constant.SparseConditionalConstantPropagation;
import com.android.tools.r8.ir.code.IRCode;
import com.android.tools.r8.ir.desugar.InterfaceMethodRewriter;
import com.android.tools.r8.ir.desugar.LambdaRewriter;