Change IRCodeInstructionsIterator to implement InstructionListIterator
Change-Id: I7c27d769ef1fb7006108621eb803998e528dbe7a
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 a07e11b..bc53af5 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
@@ -823,7 +823,7 @@
}
public InstructionIterator instructionIterator() {
- return new IRCodeInstructionsIterator(this);
+ return new IRCodeInstructionListIterator(this);
}
public List<BasicBlock> computeNormalExitBlocks() {
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionsIterator.java b/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionListIterator.java
similarity index 61%
rename from src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionsIterator.java
rename to src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionListIterator.java
index 21bb7e9..c7f8414 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionsIterator.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCodeInstructionListIterator.java
@@ -4,23 +4,70 @@
package com.android.tools.r8.ir.code;
+import com.android.tools.r8.errors.Unimplemented;
+import com.android.tools.r8.graph.AppInfoWithSubtyping;
+import com.android.tools.r8.graph.AppView;
+import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.utils.InternalOptions;
import java.util.ListIterator;
import java.util.NoSuchElementException;
+import java.util.Set;
-public class IRCodeInstructionsIterator implements InstructionIterator {
+public class IRCodeInstructionListIterator implements InstructionListIterator {
private final ListIterator<BasicBlock> blockIterator;
private InstructionListIterator instructionIterator;
private IRMetadata metadata;
- public IRCodeInstructionsIterator(IRCode code) {
+ public IRCodeInstructionListIterator(IRCode code) {
blockIterator = code.listIterator();
instructionIterator = blockIterator.next().listIterator();
}
@Override
- public IRCodeInstructionsIterator recordChangesToMetadata(IRMetadata metadata) {
+ public Value insertConstNullInstruction(IRCode code, InternalOptions options) {
+ return instructionIterator.insertConstNullInstruction(code, options);
+ }
+
+ @Override
+ public Value insertConstIntInstruction(IRCode code, InternalOptions options, int value) {
+ return instructionIterator.insertConstIntInstruction(code, options, value);
+ }
+
+ @Override
+ public void replaceCurrentInstructionWithThrowNull(
+ AppView<? extends AppInfoWithSubtyping> appView,
+ IRCode code,
+ ListIterator<BasicBlock> blockIterator,
+ Set<BasicBlock> blocksToRemove,
+ Set<Value> affectedValues) {
+ throw new Unimplemented();
+ }
+
+ @Override
+ public BasicBlock split(IRCode code, ListIterator<BasicBlock> blockIterator) {
+ throw new Unimplemented();
+ }
+
+ @Override
+ public BasicBlock split(IRCode code, int instructions, ListIterator<BasicBlock> blockIterator) {
+ throw new Unimplemented();
+ }
+
+ @Override
+ public BasicBlock inlineInvoke(
+ AppView<?> appView,
+ IRCode code,
+ IRCode inlinee,
+ ListIterator<BasicBlock> blockIterator,
+ Set<BasicBlock> blocksToRemove,
+ DexType downcast) {
+ throw new Unimplemented();
+ }
+
+ @Override
+ public IRCodeInstructionListIterator recordChangesToMetadata(IRMetadata metadata) {
this.metadata = metadata;
return this;
}