summaryrefslogtreecommitdiff
path: root/chapter12/src
diff options
context:
space:
mode:
Diffstat (limited to 'chapter12/src')
-rw-r--r--chapter12/src/main/java/com/seaofnodes/simple/Parser.java2
-rw-r--r--chapter12/src/test/java/com/seaofnodes/simple/Chapter10Test.java4
2 files changed, 3 insertions, 3 deletions
diff --git a/chapter12/src/main/java/com/seaofnodes/simple/Parser.java b/chapter12/src/main/java/com/seaofnodes/simple/Parser.java
index 0fa7ee0a..a25edeb1 100644
--- a/chapter12/src/main/java/com/seaofnodes/simple/Parser.java
+++ b/chapter12/src/main/java/com/seaofnodes/simple/Parser.java
@@ -602,7 +602,7 @@ public class Parser {
Node prior = mem().keep();
Node st = new StoreNode(name,alias,glb,null,prior,ptr,val,init).peephole();
mem(new MemMergeNode(prior,alias,st).peephole());
- prior.unkeep();
+ if( prior.unkeep().isUnused() ) prior.kill();
}
/**
diff --git a/chapter12/src/test/java/com/seaofnodes/simple/Chapter10Test.java b/chapter12/src/test/java/com/seaofnodes/simple/Chapter10Test.java
index 55574c13..e5d9b882 100644
--- a/chapter12/src/test/java/com/seaofnodes/simple/Chapter10Test.java
+++ b/chapter12/src/test/java/com/seaofnodes/simple/Chapter10Test.java
@@ -549,8 +549,8 @@ return 0;
if (arg) s.x=arg+1; else s.x=arg+2;
return s;
""").parse().iterate();
- // The initializing slice also remains live as the aggregate default.
- assertEquals(2,countMemoryNodes(stop,StoreNode.class,new BitSet()));
+ // Releasing the old aggregate exposes the overwritten initializing Store.
+ assertEquals(1,countMemoryNodes(stop,StoreNode.class,new BitSet()));
assertEquals(2L,((Evaluator.Obj)Evaluator.evaluate(stop,0)).fields()[0]);
assertEquals(4L,((Evaluator.Obj)Evaluator.evaluate(stop,3)).fields()[0]);
}