diff options
| author | Cliff Click <cliffc@acm.org> | 2026-09-22 16:02:08 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-09-22 16:02:08 -0700 |
| commit | 695429df954b084d2226fe2a6c1a47e1861bcc01 (patch) | |
| tree | 5ee6fb3eb2b71b92cef509c28b7dfbeceea044cb /chapter05/src/main/java/com/seaofnodes | |
| parent | fb80ada35ce2806c2f617a0e336d2ca4ab1d5d12 (diff) | |
| download | Simple-695429df954b084d2226fe2a6c1a47e1861bcc01.tar.gz Simple-695429df954b084d2226fe2a6c1a47e1861bcc01.zip | |
int fallbacks for int ops
all chapters, a little sharper for int ops
Diffstat (limited to 'chapter05/src/main/java/com/seaofnodes')
8 files changed, 11 insertions, 8 deletions
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<nIns(); i++ ) + t = t.meet(in(i)._type); + return t; } @Override diff --git a/chapter05/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter05/src/main/java/com/seaofnodes/simple/node/SubNode.java index 2e170273..d3fd1c7e 100644 --- a/chapter05/src/main/java/com/seaofnodes/simple/node/SubNode.java +++ b/chapter05/src/main/java/com/seaofnodes/simple/node/SubNode.java @@ -27,7 +27,7 @@ public class SubNode extends Node { return TypeInteger.constant(i0.value()-i1.value()); return i0.meet(i1); } - return Type.BOTTOM; + return TypeInteger.BOT; } @Override |
