summaryrefslogtreecommitdiff
path: root/chapter15/src
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2024-10-05 10:04:04 -0700
committerCliff Click <cliffc@acm.org>2024-10-06 08:56:22 -0700
commitea41e5ca82736ad8380f856c3901cb0efb65e957 (patch)
tree69e5f14176b67e706fb2935154519d8b3f256a94 /chapter15/src
parentf92f34f687e8d3ff194f7d42e0235e1463e3c2ef (diff)
downloadSimple-ea41e5ca82736ad8380f856c3901cb0efb65e957.tar.gz
Simple-ea41e5ca82736ad8380f856c3901cb0efb65e957.zip
Clean up del code
Diffstat (limited to 'chapter15/src')
-rw-r--r--chapter15/src/main/java/com/seaofnodes/simple/IRPrinter.java4
-rw-r--r--chapter15/src/main/java/com/seaofnodes/simple/Utils.java11
-rw-r--r--chapter15/src/main/java/com/seaofnodes/simple/node/Node.java5
3 files changed, 7 insertions, 13 deletions
diff --git a/chapter15/src/main/java/com/seaofnodes/simple/IRPrinter.java b/chapter15/src/main/java/com/seaofnodes/simple/IRPrinter.java
index aa84b25b..418cda29 100644
--- a/chapter15/src/main/java/com/seaofnodes/simple/IRPrinter.java
+++ b/chapter15/src/main/java/com/seaofnodes/simple/IRPrinter.java
@@ -176,8 +176,8 @@ public class IRPrinter {
_bs.set(n._nid);
}
void del(int idx) {
- Node n = Utils.del(_bfs, idx);
- _bs.clear(n._nid);
+ _bs.clear(_bfs.get(idx)._nid);
+ Utils.del(_bfs, idx);
}
boolean any_visited( Node n ) {
for( Node def : n._inputs )
diff --git a/chapter15/src/main/java/com/seaofnodes/simple/Utils.java b/chapter15/src/main/java/com/seaofnodes/simple/Utils.java
index f3ac25b1..1346c3ea 100644
--- a/chapter15/src/main/java/com/seaofnodes/simple/Utils.java
+++ b/chapter15/src/main/java/com/seaofnodes/simple/Utils.java
@@ -13,14 +13,9 @@ public class Utils {
* @param i element to be removed
* @return element removed
*/
- public static <E> E del(ArrayList<E> array, int i) {
- if ( i >= 0 && i < array.size() ) {
- E tmp = array.get(i);
- E last = array.removeLast();
- if (i < array.size()) array.set(i, last);
- return tmp;
- }
- return null;
+ public static <E> void del(ArrayList<E> array, int i) {
+ E last = array.removeLast();
+ if (i < array.size()) array.set(i, last);
}
/**
diff --git a/chapter15/src/main/java/com/seaofnodes/simple/node/Node.java b/chapter15/src/main/java/com/seaofnodes/simple/node/Node.java
index c3a0f20f..e4b887a0 100644
--- a/chapter15/src/main/java/com/seaofnodes/simple/node/Node.java
+++ b/chapter15/src/main/java/com/seaofnodes/simple/node/Node.java
@@ -179,11 +179,10 @@ public abstract class Node implements OutNode {
Node delDef(int idx) {
unlock();
Node old_def = in(idx);
- if( old_def != null && // If the old def exists, remove a def->use edge
- old_def.delUse(this) ) // If we removed the last use, the old def is now dead
+ Utils.del(_inputs, idx);
+ if( old_def.delUse(this) ) // If we removed the last use, the old def is now dead
old_def.kill(); // Kill old def
old_def.moveDepsToWorklist();
- Utils.del(_inputs, idx);
return this;
}