summaryrefslogtreecommitdiff
path: root/chapter15/src/test/java
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2024-10-13 16:50:30 -0700
committerCliff Click <cliffc@acm.org>2024-10-14 08:52:32 -0700
commiteb18b6eab34d71a9041030959473c1ec0409c170 (patch)
tree19fdc41d3c2b3c39d6dc3c651aede58fcf597b69 /chapter15/src/test/java
parentf2be9faaef2f3fd4465924eaa0236fc832003469 (diff)
downloadSimple-eb18b6eab34d71a9041030959473c1ec0409c170.tar.gz
Simple-eb18b6eab34d71a9041030959473c1ec0409c170.zip
fix lifetime issues with GVN gone wild
Diffstat (limited to 'chapter15/src/test/java')
-rw-r--r--chapter15/src/test/java/com/seaofnodes/simple/Chapter15Test.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/chapter15/src/test/java/com/seaofnodes/simple/Chapter15Test.java b/chapter15/src/test/java/com/seaofnodes/simple/Chapter15Test.java
index 3a379084..6ec7cc1a 100644
--- a/chapter15/src/test/java/com/seaofnodes/simple/Chapter15Test.java
+++ b/chapter15/src/test/java/com/seaofnodes/simple/Chapter15Test.java
@@ -14,8 +14,7 @@ public class Chapter15Test {
@Test
public void testJig() {
- Parser parser = new Parser(
-"""
+ Parser parser = new Parser("""
return 3.14;
""");
StopNode stop = parser.parse().iterate();
@@ -24,6 +23,23 @@ return 3.14;
}
@Test
+ public void testLifetime() {
+ Parser parser = new Parser("""
+u8[] b = new u8[5];
+if (arg) {
+ b[0] = b[0] + 1;
+} else {
+ b[1] = b[1] * 2;
+}
+return b[0] + b[1];
+""");
+ StopNode stop = parser.parse().iterate();
+ assertEquals("return Phi(Region69,1,0);", stop.toString());
+ assertEquals(0L, Evaluator.evaluate(stop, 0));
+ assertEquals(1L, Evaluator.evaluate(stop, 1));
+ }
+
+ @Test
public void testCyclic() {
Parser parser = new Parser(
"""