summaryrefslogtreecommitdiff
path: root/chapter18/src
diff options
context:
space:
mode:
Diffstat (limited to 'chapter18/src')
-rw-r--r--chapter18/src/main/java/com/seaofnodes/simple/node/StoreNode.java7
-rw-r--r--chapter18/src/test/java/com/seaofnodes/simple/Chapter18Test.java4
2 files changed, 6 insertions, 5 deletions
diff --git a/chapter18/src/main/java/com/seaofnodes/simple/node/StoreNode.java b/chapter18/src/main/java/com/seaofnodes/simple/node/StoreNode.java
index ee6832ad..6032de48 100644
--- a/chapter18/src/main/java/com/seaofnodes/simple/node/StoreNode.java
+++ b/chapter18/src/main/java/com/seaofnodes/simple/node/StoreNode.java
@@ -92,9 +92,10 @@ public class StoreNode extends MemOpNode {
// Folding away a broken store
err()==null ) {
nnn.setDef(nnn.findAlias(_alias),val());
- // Must retype the NewNode
- nnn .setType(nnn .compute());
- mem().setType(mem().compute());
+ // Must *retype* the NewNode, this is not monotonic in isolation
+ // but is monotonic counting from this Store to the New.
+ nnn ._type = nnn .compute();
+ mem()._type = mem().compute();
return mem();
}
diff --git a/chapter18/src/test/java/com/seaofnodes/simple/Chapter18Test.java b/chapter18/src/test/java/com/seaofnodes/simple/Chapter18Test.java
index 3fc5c8de..64c07cf0 100644
--- a/chapter18/src/test/java/com/seaofnodes/simple/Chapter18Test.java
+++ b/chapter18/src/test/java/com/seaofnodes/simple/Chapter18Test.java
@@ -192,8 +192,8 @@ for(;;) {
}
""");
code.parse().opto().typeCheck().GCM().localSched();
- assertEquals("Stop[ ]", code._stop.toString());
- assertEquals("0", Eval2.eval(code, 0));
+ assertEquals("return Top;", code._stop.toString());
+ assertEquals(null, Eval2.eval(code, 0));
}
// Function break