summaryrefslogtreecommitdiff
path: root/chapter22/src/main/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'chapter22/src/main/java/com')
-rw-r--r--chapter22/src/main/java/com/seaofnodes/simple/Parser.java7
1 files changed, 4 insertions, 3 deletions
diff --git a/chapter22/src/main/java/com/seaofnodes/simple/Parser.java b/chapter22/src/main/java/com/seaofnodes/simple/Parser.java
index 6c3c3a9b..6ceccf0a 100644
--- a/chapter22/src/main/java/com/seaofnodes/simple/Parser.java
+++ b/chapter22/src/main/java/com/seaofnodes/simple/Parser.java
@@ -131,6 +131,8 @@ public class Parser {
private <N extends Node> N ctrl(N n) { return _scope.ctrl(n); }
public void parse() {
+ // Graph callbacks during scope setup need a source position.
+ _lexer = new Lexer(com.seaofnodes.simple.sys.SYS);
_scope.define(ScopeNode.CTRL, Type.CONTROL , false, null, _lexer);
_scope.define(ScopeNode.MEM0, TypeMem.BOT , false, null, _lexer);
@@ -140,7 +142,6 @@ public class Parser {
_scope.mem(con(TypeMem.BOT));
// Parse the sys import
- _lexer = new Lexer(com.seaofnodes.simple.sys.SYS);
while( !_lexer.isEOF() ) {
parseStatement();
_lexer.skipWhiteSpace();
@@ -1309,7 +1310,7 @@ public class Parser {
mem(after.peephole());
out.unkeep();
nnn.unkeep();
- prior.unkeep();
+ prior.unkill();
for( int i=0; i<fs.length; i++ ) {
Node val = init.get(idx+i);
if( val._type != val._type.makeZero() ) {
@@ -1354,7 +1355,7 @@ public class Parser {
st.setDef(0,ctrl);
st = st.peephole();
mem(new MemMergeNode(prior,alias,st).peephole());
- prior.unkeep();
+ prior.unkill();
}
/**