summaryrefslogtreecommitdiff
path: root/chapter22/src/main/java
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-09-22 15:50:22 -0700
committerCliff Click <cliffc@acm.org>2026-09-22 15:50:22 -0700
commitfb80ada35ce2806c2f617a0e336d2ca4ab1d5d12 (patch)
treef27250a0efcc74354831da98d2cf764dfa7d9216 /chapter22/src/main/java
parented13d1ca215ea094b4d6beab89b90ab4c05ed396 (diff)
downloadSimple-fb80ada35ce2806c2f617a0e336d2ca4ab1d5d12.tar.gz
Simple-fb80ada35ce2806c2f617a0e336d2ca4ab1d5d12.zip
Graph cleanup
Phis stay with regions, stop sinks to bottom,
Diffstat (limited to 'chapter22/src/main/java')
-rw-r--r--chapter22/src/main/java/com/seaofnodes/simple/Parser.java3
-rw-r--r--chapter22/src/main/java/com/seaofnodes/simple/print/SimpleGraphAdapter.java1
2 files changed, 3 insertions, 1 deletions
diff --git a/chapter22/src/main/java/com/seaofnodes/simple/Parser.java b/chapter22/src/main/java/com/seaofnodes/simple/Parser.java
index 60a36574..72fe6a71 100644
--- a/chapter22/src/main/java/com/seaofnodes/simple/Parser.java
+++ b/chapter22/src/main/java/com/seaofnodes/simple/Parser.java
@@ -534,6 +534,7 @@ public class Parser {
// In if true branch, the ifT proj node becomes the ctrl
// But first clone the scope and set it as current
ScopeNode fScope = _scope.dup(); // Duplicate current scope
+ fScope.ctrl(ifF); // The pending arm already starts at False
_xScopes.push(fScope); // For graph visualization we need all scopes
// Parse the true side
@@ -551,7 +552,7 @@ public class Parser {
// Parse the false side
_scope = fScope; // Restore scope, then parse else block if any
- ctrl(ifF.unkeep()); // Ctrl token is now set to ifFalse projection
+ ifF.unkeep(); // fScope already owns the false control
// Up-cast predicate, even if not else clause, because predicate can
// remain true if the true clause exits: `if( !ptr ) return 0; return ptr.fld;`
_scope.addGuards(ifF,pred,true);
diff --git a/chapter22/src/main/java/com/seaofnodes/simple/print/SimpleGraphAdapter.java b/chapter22/src/main/java/com/seaofnodes/simple/print/SimpleGraphAdapter.java
index 8dcee566..2bcda3ef 100644
--- a/chapter22/src/main/java/com/seaofnodes/simple/print/SimpleGraphAdapter.java
+++ b/chapter22/src/main/java/com/seaofnodes/simple/print/SimpleGraphAdapter.java
@@ -38,6 +38,7 @@ public class SimpleGraphAdapter extends GraphAdapter<Node> {
}
private Kind kind(Node n) {
+ if( n instanceof StopNode ) return Kind.STOP;
if( n instanceof ScopeNode ) return Kind.SCOPE;
if( n instanceof FunNode ) return Kind.FUN;
if( n instanceof StartNode ) return Kind.CTRL;