summaryrefslogtreecommitdiff
path: root/chapter25/src/main/java/com/seaofnodes
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-09-14 13:27:36 -0700
committerCliff Click <cliffc@acm.org>2026-09-14 13:27:36 -0700
commite44bf7549dedb51397e3d430935f8eed4d35096e (patch)
treead082b0945ef7b7f7fe3192ef9dafe7b0cae1583 /chapter25/src/main/java/com/seaofnodes
parent8c5f7683eb4366fbb452ed30c11829daabeaddd2 (diff)
downloadSimple-e44bf7549dedb51397e3d430935f8eed4d35096e.tar.gz
Simple-e44bf7549dedb51397e3d430935f8eed4d35096e.zip
Handle dying escapenode
Diffstat (limited to 'chapter25/src/main/java/com/seaofnodes')
-rw-r--r--chapter25/src/main/java/com/seaofnodes/simple/node/LoadNode.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/chapter25/src/main/java/com/seaofnodes/simple/node/LoadNode.java b/chapter25/src/main/java/com/seaofnodes/simple/node/LoadNode.java
index b27da676..f5b61048 100644
--- a/chapter25/src/main/java/com/seaofnodes/simple/node/LoadNode.java
+++ b/chapter25/src/main/java/com/seaofnodes/simple/node/LoadNode.java
@@ -189,8 +189,10 @@ public class LoadNode extends MemOpNode {
case EscapeNode esc:
if( esc.self()==ptr ) // Proved equal
{ mem = esc.priv(); break; }
+ // Mal-formed, dying
+ if( !(esc.self().in(0) instanceof NewNode) )
+ break outer;
// Two NewNodes are always unequal
- assert esc.self().in(0) instanceof NewNode;
if( ptr.in(0) instanceof NewNode )
{ mem = esc.pub(); break; }
// TODO: Can we prove unequal?