summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2024-09-13 09:40:38 -0700
committerXmiliaH <45106915+XmiliaH@users.noreply.github.com>2024-09-13 18:46:01 +0200
commit4be43794169610d45e47468702c63cdfbc5deb5a (patch)
treecce5414e14ceab8d4e4927bdf553f1e4528429a1
parent703f88dbb2e1e4352a0725b7e742151739b82ea1 (diff)
downloadSimple-4be43794169610d45e47468702c63cdfbc5deb5a.tar.gz
Simple-4be43794169610d45e47468702c63cdfbc5deb5a.zip
move x-x check up front
-rw-r--r--chapter04/src/main/java/com/seaofnodes/simple/node/SubNode.java8
-rw-r--r--chapter05/src/main/java/com/seaofnodes/simple/node/SubNode.java7
-rw-r--r--chapter06/src/main/java/com/seaofnodes/simple/node/SubNode.java7
-rw-r--r--chapter07/src/main/java/com/seaofnodes/simple/node/SubNode.java7
-rw-r--r--chapter08/src/main/java/com/seaofnodes/simple/node/SubNode.java7
-rw-r--r--chapter09/src/main/java/com/seaofnodes/simple/node/SubNode.java7
-rw-r--r--chapter10/src/main/java/com/seaofnodes/simple/node/SubNode.java7
-rw-r--r--chapter11/src/main/java/com/seaofnodes/simple/node/SubNode.java7
-rw-r--r--chapter12/src/main/java/com/seaofnodes/simple/node/SubNode.java7
-rw-r--r--chapter13/src/main/java/com/seaofnodes/simple/node/SubNode.java7
-rw-r--r--chapter14/src/main/java/com/seaofnodes/simple/node/SubNode.java7
11 files changed, 44 insertions, 34 deletions
diff --git a/chapter04/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter04/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 27e77f90..58d757ea 100644
--- a/chapter04/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter04/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -19,6 +19,10 @@ public class SubNode extends Node {
@Override
public Type compute() {
+ // Sub of same is 0
+ if( in(1)==in(2) )
+ return TypeInteger.ZERO;
+
if (in(1)._type instanceof TypeInteger i0 &&
in(2)._type instanceof TypeInteger i1) {
if (i0.isConstant() && i1.isConstant())
@@ -30,10 +34,6 @@ public class SubNode extends Node {
@Override
public Node idealize() {
- // Sub of same is 0
- if( in(1)==in(2) )
- return new ConstantNode(TypeInteger.constant(0));
-
return null;
}
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 5e7243ba..475b3790 100644
--- a/chapter05/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter05/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -19,15 +19,16 @@ public class SubNode extends Node {
@Override
public Type compute() {
+ // Sub of same is 0
+ if( in(1)==in(2) )
+ return TypeInteger.ZERO;
+
if (in(1)._type instanceof TypeInteger i0 &&
in(2)._type instanceof TypeInteger i1) {
if (i0.isConstant() && i1.isConstant())
return TypeInteger.constant(i0.value()-i1.value());
return i0.meet(i1);
}
- // Sub of same is 0
- if( in(1)==in(2) )
- return TypeInteger.ZERO;
return Type.BOTTOM;
}
diff --git a/chapter06/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter06/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 5e7243ba..475b3790 100644
--- a/chapter06/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter06/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -19,15 +19,16 @@ public class SubNode extends Node {
@Override
public Type compute() {
+ // Sub of same is 0
+ if( in(1)==in(2) )
+ return TypeInteger.ZERO;
+
if (in(1)._type instanceof TypeInteger i0 &&
in(2)._type instanceof TypeInteger i1) {
if (i0.isConstant() && i1.isConstant())
return TypeInteger.constant(i0.value()-i1.value());
return i0.meet(i1);
}
- // Sub of same is 0
- if( in(1)==in(2) )
- return TypeInteger.ZERO;
return Type.BOTTOM;
}
diff --git a/chapter07/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter07/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 98aa679f..af66b950 100644
--- a/chapter07/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter07/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -21,15 +21,16 @@ public class SubNode extends Node {
@Override
public Type compute() {
+ // Sub of same is 0
+ if( in(1)==in(2) )
+ return TypeInteger.ZERO;
+
if (in(1)._type instanceof TypeInteger i0 &&
in(2)._type instanceof TypeInteger i1) {
if (i0.isConstant() && i1.isConstant())
return TypeInteger.constant(i0.value()-i1.value());
return i0.meet(i1);
}
- // Sub of same is 0
- if( in(1)==in(2) )
- return TypeInteger.ZERO;
return Type.BOTTOM;
}
diff --git a/chapter08/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter08/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 98aa679f..af66b950 100644
--- a/chapter08/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter08/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -21,15 +21,16 @@ public class SubNode extends Node {
@Override
public Type compute() {
+ // Sub of same is 0
+ if( in(1)==in(2) )
+ return TypeInteger.ZERO;
+
if (in(1)._type instanceof TypeInteger i0 &&
in(2)._type instanceof TypeInteger i1) {
if (i0.isConstant() && i1.isConstant())
return TypeInteger.constant(i0.value()-i1.value());
return i0.meet(i1);
}
- // Sub of same is 0
- if( in(1)==in(2) )
- return TypeInteger.ZERO;
return Type.BOTTOM;
}
diff --git a/chapter09/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter09/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 7273c02a..f661be14 100644
--- a/chapter09/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter09/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -21,14 +21,15 @@ public class SubNode extends Node {
@Override
public Type compute() {
+ // Sub of same is 0
+ if( in(1)==in(2) )
+ return TypeInteger.ZERO;
+
if (in(1)._type instanceof TypeInteger i0 &&
in(2)._type instanceof TypeInteger i1) {
if (i0.isConstant() && i1.isConstant())
return TypeInteger.constant(i0.value()-i1.value());
}
- // Sub of same is 0
- if( in(1)==in(2) )
- return TypeInteger.ZERO;
return in(1)._type.meet(in(2)._type);
}
diff --git a/chapter10/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter10/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 53f90dd6..b87115cd 100644
--- a/chapter10/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter10/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -21,14 +21,15 @@ public class SubNode extends Node {
@Override
public Type compute() {
+ // Sub of same is 0
+ if( in(1)==in(2) )
+ return TypeInteger.ZERO;
+
if (in(1)._type instanceof TypeInteger i0 &&
in(2)._type instanceof TypeInteger i1) {
if (i0.isConstant() && i1.isConstant())
return TypeInteger.constant(i0.value()-i1.value());
}
- // Sub of same is 0
- if( in(1)==in(2) )
- return TypeInteger.ZERO;
return in(1)._type.meet(in(2)._type);
}
diff --git a/chapter11/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter11/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 128678a7..5ddcdb68 100644
--- a/chapter11/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter11/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -22,14 +22,15 @@ public class SubNode extends Node {
@Override
public Type compute() {
+ // Sub of same is 0
+ if( in(1)==in(2) )
+ return TypeInteger.ZERO;
+
if (in(1)._type instanceof TypeInteger i0 &&
in(2)._type instanceof TypeInteger i1) {
if (i0.isConstant() && i1.isConstant())
return TypeInteger.constant(i0.value()-i1.value());
}
- // Sub of same is 0
- if( in(1)==in(2) )
- return TypeInteger.ZERO;
return in(1)._type.meet(in(2)._type);
}
diff --git a/chapter12/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter12/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 8bebe774..f0c77743 100644
--- a/chapter12/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter12/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -22,14 +22,15 @@ public class SubNode extends Node {
@Override
public Type compute() {
+ // Sub of same is 0
+ if( in(1)==in(2) )
+ return TypeInteger.ZERO;
+
if (in(1)._type instanceof TypeInteger i0 &&
in(2)._type instanceof TypeInteger i1) {
if (i0.isConstant() && i1.isConstant())
return TypeInteger.constant(i0.value()-i1.value());
}
- // Sub of same is 0
- if( in(1)==in(2) )
- return TypeInteger.ZERO;
return in(1)._type.meet(in(2)._type);
}
diff --git a/chapter13/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter13/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 0f2deb33..81cc6076 100644
--- a/chapter13/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter13/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -22,14 +22,15 @@ public class SubNode extends Node {
@Override
public Type compute() {
+ // Sub of same is 0
+ if( in(1)==in(2) )
+ return TypeInteger.ZERO;
+
if (in(1)._type instanceof TypeInteger i0 &&
in(2)._type instanceof TypeInteger i1) {
if (i0.isConstant() && i1.isConstant())
return TypeInteger.constant(i0.value()-i1.value());
}
- // Sub of same is 0
- if( in(1)==in(2) )
- return TypeInteger.ZERO;
return in(1)._type.meet(in(2)._type);
}
diff --git a/chapter14/src/main/java/com/seaofnodes/simple/node/SubNode.java b/chapter14/src/main/java/com/seaofnodes/simple/node/SubNode.java
index 009fb30e..6d2f1711 100644
--- a/chapter14/src/main/java/com/seaofnodes/simple/node/SubNode.java
+++ b/chapter14/src/main/java/com/seaofnodes/simple/node/SubNode.java
@@ -22,6 +22,10 @@ public class SubNode extends Node {
@Override
public Type compute() {
+ // Sub of same is 0
+ if( in(1)==in(2) )
+ return TypeInteger.ZERO;
+
Type t1 = in(1)._type, t2 = in(2)._type;
if( t1.isHigh() || t2.isHigh() )
return TypeInteger.TOP;
@@ -30,9 +34,6 @@ public class SubNode extends Node {
if (i1.isConstant() && i2.isConstant())
return TypeInteger.constant(i1.value()-i2.value());
}
- // Sub of same is 0
- if( in(1)==in(2) )
- return TypeInteger.ZERO;
return TypeInteger.BOT;
}