summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chapter06/src/main/java/com/seaofnodes/simple/node/ProjNode.java8
-rw-r--r--chapter07/src/main/java/com/seaofnodes/simple/node/ProjNode.java8
-rw-r--r--chapter08/src/main/java/com/seaofnodes/simple/node/ProjNode.java8
-rw-r--r--chapter09/src/main/java/com/seaofnodes/simple/node/ProjNode.java8
-rw-r--r--chapter10/src/main/java/com/seaofnodes/simple/node/ProjNode.java17
-rw-r--r--chapter11/src/main/java/com/seaofnodes/simple/node/CProjNode.java17
-rw-r--r--chapter12/src/main/java/com/seaofnodes/simple/node/CProjNode.java17
-rw-r--r--chapter13/src/main/java/com/seaofnodes/simple/node/CProjNode.java17
-rw-r--r--chapter14/src/main/java/com/seaofnodes/simple/node/CProjNode.java17
9 files changed, 43 insertions, 74 deletions
diff --git a/chapter06/src/main/java/com/seaofnodes/simple/node/ProjNode.java b/chapter06/src/main/java/com/seaofnodes/simple/node/ProjNode.java
index e3a0e44a..85f28037 100644
--- a/chapter06/src/main/java/com/seaofnodes/simple/node/ProjNode.java
+++ b/chapter06/src/main/java/com/seaofnodes/simple/node/ProjNode.java
@@ -35,12 +35,8 @@ public class ProjNode extends Node {
@Override
public Node idealize() {
- if( ctrl()._type instanceof TypeTuple tt ) {
- if( tt._types[_idx]==Type.XCONTROL )
- return new ConstantNode(Type.XCONTROL).peephole(); // We are dead
- if( tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
- return ctrl().in(0); // We become our input control
- }
+ if( ctrl()._type instanceof TypeTuple tt && tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
+ return ctrl().in(0); // We become our input control
return null;
}
}
diff --git a/chapter07/src/main/java/com/seaofnodes/simple/node/ProjNode.java b/chapter07/src/main/java/com/seaofnodes/simple/node/ProjNode.java
index c263502d..3c3f73b8 100644
--- a/chapter07/src/main/java/com/seaofnodes/simple/node/ProjNode.java
+++ b/chapter07/src/main/java/com/seaofnodes/simple/node/ProjNode.java
@@ -38,12 +38,8 @@ public class ProjNode extends Node {
@Override
public Node idealize() {
- if( ctrl()._type instanceof TypeTuple tt ) {
- if( tt._types[_idx]==Type.XCONTROL )
- return new ConstantNode(Type.XCONTROL).peephole(); // We are dead
- if( tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
- return ctrl().in(0); // We become our input control
- }
+ if( ctrl()._type instanceof TypeTuple tt && tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
+ return ctrl().in(0); // We become our input control
return null;
}
}
diff --git a/chapter08/src/main/java/com/seaofnodes/simple/node/ProjNode.java b/chapter08/src/main/java/com/seaofnodes/simple/node/ProjNode.java
index c263502d..3c3f73b8 100644
--- a/chapter08/src/main/java/com/seaofnodes/simple/node/ProjNode.java
+++ b/chapter08/src/main/java/com/seaofnodes/simple/node/ProjNode.java
@@ -38,12 +38,8 @@ public class ProjNode extends Node {
@Override
public Node idealize() {
- if( ctrl()._type instanceof TypeTuple tt ) {
- if( tt._types[_idx]==Type.XCONTROL )
- return new ConstantNode(Type.XCONTROL).peephole(); // We are dead
- if( tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
- return ctrl().in(0); // We become our input control
- }
+ if( ctrl()._type instanceof TypeTuple tt && tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
+ return ctrl().in(0); // We become our input control
return null;
}
}
diff --git a/chapter09/src/main/java/com/seaofnodes/simple/node/ProjNode.java b/chapter09/src/main/java/com/seaofnodes/simple/node/ProjNode.java
index 25f595a5..0ed9441d 100644
--- a/chapter09/src/main/java/com/seaofnodes/simple/node/ProjNode.java
+++ b/chapter09/src/main/java/com/seaofnodes/simple/node/ProjNode.java
@@ -38,12 +38,8 @@ public class ProjNode extends Node {
@Override
public Node idealize() {
- if( ctrl()._type instanceof TypeTuple tt ) {
- if( tt._types[_idx]==Type.XCONTROL )
- return new ConstantNode(Type.XCONTROL).peephole(); // We are dead
- if( tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
- return ctrl().in(0); // We become our input control
- }
+ if( ctrl()._type instanceof TypeTuple tt && tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
+ return ctrl().in(0); // We become our input control
return null;
}
diff --git a/chapter10/src/main/java/com/seaofnodes/simple/node/ProjNode.java b/chapter10/src/main/java/com/seaofnodes/simple/node/ProjNode.java
index 18526677..735fcdf3 100644
--- a/chapter10/src/main/java/com/seaofnodes/simple/node/ProjNode.java
+++ b/chapter10/src/main/java/com/seaofnodes/simple/node/ProjNode.java
@@ -40,17 +40,14 @@ public class ProjNode extends Node {
@Override
public Node idealize() {
- if( ctrl()._type instanceof TypeTuple tt ) {
- if( tt._types[_idx]==Type.XCONTROL )
- return new ConstantNode(Type.XCONTROL).peephole(); // We are dead
- if( ctrl() instanceof IfNode && tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
- return ctrl().in(0); // We become our input control
- }
-
- // Flip a negating if-test, to remove the not
- if( ctrl() instanceof IfNode iff && iff.pred().addDep(this) instanceof NotNode not )
- return new ProjNode((MultiNode)new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ if ( ctrl() instanceof IfNode iff ) {
+ if ( iff._type instanceof TypeTuple tt && tt._types[1 - _idx] == Type.XCONTROL )
+ return iff.in(0); // We become our input control
+ // Flip a negating if-test, to remove the not
+ if( iff.pred().addDep(this) instanceof NotNode not )
+ return new ProjNode((MultiNode)new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ }
return null;
}
diff --git a/chapter11/src/main/java/com/seaofnodes/simple/node/CProjNode.java b/chapter11/src/main/java/com/seaofnodes/simple/node/CProjNode.java
index 3d6fd1fa..fb0ff879 100644
--- a/chapter11/src/main/java/com/seaofnodes/simple/node/CProjNode.java
+++ b/chapter11/src/main/java/com/seaofnodes/simple/node/CProjNode.java
@@ -37,17 +37,14 @@ public class CProjNode extends CFGNode {
@Override
public Node idealize() {
- if( ctrl()._type instanceof TypeTuple tt ) {
- if( tt._types[_idx]==Type.XCONTROL )
- return Parser.XCTRL; // We are dead
- if( ctrl() instanceof IfNode && tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
- return ctrl().in(0); // We become our input control
- }
-
- // Flip a negating if-test, to remove the not
- if( ctrl() instanceof IfNode iff && iff.pred().addDep(this) instanceof NotNode not )
- return new CProjNode(new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ if ( ctrl() instanceof IfNode iff ) {
+ if ( iff._type instanceof TypeTuple tt && tt._types[1 - _idx] == Type.XCONTROL )
+ return iff.in(0); // We become our input control
+ // Flip a negating if-test, to remove the not
+ if( iff.pred().addDep(this) instanceof NotNode not )
+ return new CProjNode(new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ }
return null;
}
diff --git a/chapter12/src/main/java/com/seaofnodes/simple/node/CProjNode.java b/chapter12/src/main/java/com/seaofnodes/simple/node/CProjNode.java
index 3d6fd1fa..fb0ff879 100644
--- a/chapter12/src/main/java/com/seaofnodes/simple/node/CProjNode.java
+++ b/chapter12/src/main/java/com/seaofnodes/simple/node/CProjNode.java
@@ -37,17 +37,14 @@ public class CProjNode extends CFGNode {
@Override
public Node idealize() {
- if( ctrl()._type instanceof TypeTuple tt ) {
- if( tt._types[_idx]==Type.XCONTROL )
- return Parser.XCTRL; // We are dead
- if( ctrl() instanceof IfNode && tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
- return ctrl().in(0); // We become our input control
- }
-
- // Flip a negating if-test, to remove the not
- if( ctrl() instanceof IfNode iff && iff.pred().addDep(this) instanceof NotNode not )
- return new CProjNode(new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ if ( ctrl() instanceof IfNode iff ) {
+ if ( iff._type instanceof TypeTuple tt && tt._types[1 - _idx] == Type.XCONTROL )
+ return iff.in(0); // We become our input control
+ // Flip a negating if-test, to remove the not
+ if( iff.pred().addDep(this) instanceof NotNode not )
+ return new CProjNode(new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ }
return null;
}
diff --git a/chapter13/src/main/java/com/seaofnodes/simple/node/CProjNode.java b/chapter13/src/main/java/com/seaofnodes/simple/node/CProjNode.java
index 3d6fd1fa..fb0ff879 100644
--- a/chapter13/src/main/java/com/seaofnodes/simple/node/CProjNode.java
+++ b/chapter13/src/main/java/com/seaofnodes/simple/node/CProjNode.java
@@ -37,17 +37,14 @@ public class CProjNode extends CFGNode {
@Override
public Node idealize() {
- if( ctrl()._type instanceof TypeTuple tt ) {
- if( tt._types[_idx]==Type.XCONTROL )
- return Parser.XCTRL; // We are dead
- if( ctrl() instanceof IfNode && tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
- return ctrl().in(0); // We become our input control
- }
-
- // Flip a negating if-test, to remove the not
- if( ctrl() instanceof IfNode iff && iff.pred().addDep(this) instanceof NotNode not )
- return new CProjNode(new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ if ( ctrl() instanceof IfNode iff ) {
+ if ( iff._type instanceof TypeTuple tt && tt._types[1 - _idx] == Type.XCONTROL )
+ return iff.in(0); // We become our input control
+ // Flip a negating if-test, to remove the not
+ if( iff.pred().addDep(this) instanceof NotNode not )
+ return new CProjNode(new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ }
return null;
}
diff --git a/chapter14/src/main/java/com/seaofnodes/simple/node/CProjNode.java b/chapter14/src/main/java/com/seaofnodes/simple/node/CProjNode.java
index 3d6fd1fa..fb0ff879 100644
--- a/chapter14/src/main/java/com/seaofnodes/simple/node/CProjNode.java
+++ b/chapter14/src/main/java/com/seaofnodes/simple/node/CProjNode.java
@@ -37,17 +37,14 @@ public class CProjNode extends CFGNode {
@Override
public Node idealize() {
- if( ctrl()._type instanceof TypeTuple tt ) {
- if( tt._types[_idx]==Type.XCONTROL )
- return Parser.XCTRL; // We are dead
- if( ctrl() instanceof IfNode && tt._types[1-_idx]==Type.XCONTROL ) // Only true for IfNodes
- return ctrl().in(0); // We become our input control
- }
-
- // Flip a negating if-test, to remove the not
- if( ctrl() instanceof IfNode iff && iff.pred().addDep(this) instanceof NotNode not )
- return new CProjNode(new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ if ( ctrl() instanceof IfNode iff ) {
+ if ( iff._type instanceof TypeTuple tt && tt._types[1 - _idx] == Type.XCONTROL )
+ return iff.in(0); // We become our input control
+ // Flip a negating if-test, to remove the not
+ if( iff.pred().addDep(this) instanceof NotNode not )
+ return new CProjNode(new IfNode(iff.ctrl(),not.in(1)).peephole(),1-_idx,_idx==0 ? "False" : "True");
+ }
return null;
}