From 695429df954b084d2226fe2a6c1a47e1861bcc01 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Tue, 22 Sep 2026 16:02:08 -0700 Subject: int fallbacks for int ops all chapters, a little sharper for int ops --- chapter05/src/main/java/com/seaofnodes/simple/node/AddNode.java | 2 +- chapter05/src/main/java/com/seaofnodes/simple/node/BoolNode.java | 2 +- chapter05/src/main/java/com/seaofnodes/simple/node/DivNode.java | 2 +- chapter05/src/main/java/com/seaofnodes/simple/node/MinusNode.java | 2 +- chapter05/src/main/java/com/seaofnodes/simple/node/MulNode.java | 2 +- chapter05/src/main/java/com/seaofnodes/simple/node/NotNode.java | 2 +- chapter05/src/main/java/com/seaofnodes/simple/node/PhiNode.java | 5 ++++- chapter05/src/main/java/com/seaofnodes/simple/node/SubNode.java | 2 +- 8 files changed, 11 insertions(+), 8 deletions(-) (limited to 'chapter05/src/main/java/com') diff --git a/chapter05/src/main/java/com/seaofnodes/simple/node/AddNode.java b/chapter05/src/main/java/com/seaofnodes/simple/node/AddNode.java index 0600222a..2772c4c5 100644 --- a/chapter05/src/main/java/com/seaofnodes/simple/node/AddNode.java +++ b/chapter05/src/main/java/com/seaofnodes/simple/node/AddNode.java @@ -23,7 +23,7 @@ public class AddNode extends Node { return TypeInteger.constant(i0.value()+i1.value()); return i0.meet(i1); } - return Type.BOTTOM; + return TypeInteger.BOT; } @Override diff --git a/chapter05/src/main/java/com/seaofnodes/simple/node/BoolNode.java b/chapter05/src/main/java/com/seaofnodes/simple/node/BoolNode.java index f5db6574..87acc6cc 100644 --- a/chapter05/src/main/java/com/seaofnodes/simple/node/BoolNode.java +++ b/chapter05/src/main/java/com/seaofnodes/simple/node/BoolNode.java @@ -29,7 +29,7 @@ abstract public class BoolNode extends Node { return TypeInteger.constant(doOp(i0.value(), i1.value()) ? 1 : 0); return i0.meet(i1); } - return Type.BOTTOM; + return TypeInteger.BOT; } abstract boolean doOp(long lhs, long rhs); diff --git a/chapter05/src/main/java/com/seaofnodes/simple/node/DivNode.java b/chapter05/src/main/java/com/seaofnodes/simple/node/DivNode.java index 1bb04be7..f80f092d 100644 --- a/chapter05/src/main/java/com/seaofnodes/simple/node/DivNode.java +++ b/chapter05/src/main/java/com/seaofnodes/simple/node/DivNode.java @@ -25,7 +25,7 @@ public class DivNode extends Node { : TypeInteger.constant(i0.value()/i1.value()); return i0.meet(i1); } - return Type.BOTTOM; + return TypeInteger.BOT; } @Override diff --git a/chapter05/src/main/java/com/seaofnodes/simple/node/MinusNode.java b/chapter05/src/main/java/com/seaofnodes/simple/node/MinusNode.java index b83c41a5..ad6e513a 100644 --- a/chapter05/src/main/java/com/seaofnodes/simple/node/MinusNode.java +++ b/chapter05/src/main/java/com/seaofnodes/simple/node/MinusNode.java @@ -18,7 +18,7 @@ public class MinusNode extends Node { public Type compute() { if (in(1)._type instanceof TypeInteger i0) return i0.isConstant() ? TypeInteger.constant(-i0.value()) : i0; - return Type.BOTTOM; + return TypeInteger.BOT; } @Override diff --git a/chapter05/src/main/java/com/seaofnodes/simple/node/MulNode.java b/chapter05/src/main/java/com/seaofnodes/simple/node/MulNode.java index 46ee6058..b1d9e44a 100644 --- a/chapter05/src/main/java/com/seaofnodes/simple/node/MulNode.java +++ b/chapter05/src/main/java/com/seaofnodes/simple/node/MulNode.java @@ -23,7 +23,7 @@ public class MulNode extends Node { return TypeInteger.constant(i0.value()*i1.value()); return i0.meet(i1); } - return Type.BOTTOM; + return TypeInteger.BOT; } @Override diff --git a/chapter05/src/main/java/com/seaofnodes/simple/node/NotNode.java b/chapter05/src/main/java/com/seaofnodes/simple/node/NotNode.java index 83c63244..6a56ff64 100644 --- a/chapter05/src/main/java/com/seaofnodes/simple/node/NotNode.java +++ b/chapter05/src/main/java/com/seaofnodes/simple/node/NotNode.java @@ -18,7 +18,7 @@ public class NotNode extends Node { public Type compute() { if( in(1)._type instanceof TypeInteger i0 ) return i0.isConstant() ? TypeInteger.constant(i0.value()==0 ? 1 : 0) : i0; - return Type.BOTTOM; + return TypeInteger.BOT; } @Override diff --git a/chapter05/src/main/java/com/seaofnodes/simple/node/PhiNode.java b/chapter05/src/main/java/com/seaofnodes/simple/node/PhiNode.java index 95c0fdf9..b3b5462d 100644 --- a/chapter05/src/main/java/com/seaofnodes/simple/node/PhiNode.java +++ b/chapter05/src/main/java/com/seaofnodes/simple/node/PhiNode.java @@ -24,7 +24,10 @@ public class PhiNode extends Node { @Override public Type compute() { - return Type.BOTTOM; + Type t = in(1)._type; + for( int i=2; i