summaryrefslogtreecommitdiff
path: root/chapter12/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'chapter12/src/main')
-rw-r--r--chapter12/src/main/java/com/seaofnodes/simple/Parser.java4
-rw-r--r--chapter12/src/main/java/com/seaofnodes/simple/node/LoadNode.java2
-rw-r--r--chapter12/src/main/java/com/seaofnodes/simple/node/MemOpNode.java8
-rw-r--r--chapter12/src/main/java/com/seaofnodes/simple/node/StoreNode.java4
4 files changed, 7 insertions, 11 deletions
diff --git a/chapter12/src/main/java/com/seaofnodes/simple/Parser.java b/chapter12/src/main/java/com/seaofnodes/simple/Parser.java
index e919449f..1a223726 100644
--- a/chapter12/src/main/java/com/seaofnodes/simple/Parser.java
+++ b/chapter12/src/main/java/com/seaofnodes/simple/Parser.java
@@ -584,7 +584,7 @@ public class Parser {
Node n = new NewNode(TypeMemPtr.make(obj), ctrl()).peephole().keep();
int alias = START._aliasStarts.get(obj._name);
for( Field field : obj._fields ) {
- memAlias(alias, new StoreNode(field._fname, alias, memAlias(alias), n, ZERO).peephole());
+ memAlias(alias, new StoreNode(field._fname, alias, ctrl(), memAlias(alias), n, ZERO).peephole());
alias++;
}
return n.unkeep();
@@ -623,7 +623,7 @@ public class Parser {
if( peek('=') ) _lexer._position--;
else {
Node val = parseExpression();
- memAlias(alias, new StoreNode(name, alias, memAlias(alias), expr, val).peephole());
+ memAlias(alias, new StoreNode(name, alias, ctrl(), memAlias(alias), expr, val).peephole());
return expr; // "obj.a = expr" returns the expression while updating memory
}
}
diff --git a/chapter12/src/main/java/com/seaofnodes/simple/node/LoadNode.java b/chapter12/src/main/java/com/seaofnodes/simple/node/LoadNode.java
index 95d49662..244a0919 100644
--- a/chapter12/src/main/java/com/seaofnodes/simple/node/LoadNode.java
+++ b/chapter12/src/main/java/com/seaofnodes/simple/node/LoadNode.java
@@ -21,7 +21,7 @@ public class LoadNode extends MemOpNode {
* @param memPtr The ptr to the struct from where we load a field
*/
public LoadNode(String name, int alias, Type glb, Node memSlice, Node memPtr) {
- super(name, alias, memSlice, memPtr);
+ super(name, alias, null, memSlice, memPtr);
_declaredType = glb;
}
diff --git a/chapter12/src/main/java/com/seaofnodes/simple/node/MemOpNode.java b/chapter12/src/main/java/com/seaofnodes/simple/node/MemOpNode.java
index 7f8d060a..551d2aa9 100644
--- a/chapter12/src/main/java/com/seaofnodes/simple/node/MemOpNode.java
+++ b/chapter12/src/main/java/com/seaofnodes/simple/node/MemOpNode.java
@@ -12,15 +12,11 @@ public abstract class MemOpNode extends Node {
public final String _name;
public final int _alias;
- public MemOpNode(String name, int alias, Node memSlice, Node memPtr) {
- super(null, memSlice, memPtr);
+ public MemOpNode(String name, int alias, Node... nodes) {
+ super(nodes);
_name = name;
_alias = alias;
}
- public MemOpNode(String name, int alias, Node memSlice, Node memPtr, Node value) {
- this(name, alias, memSlice, memPtr);
- addDef(value);
- }
public Node mem() { return in(1); }
public Node ptr() { return in(2); }
diff --git a/chapter12/src/main/java/com/seaofnodes/simple/node/StoreNode.java b/chapter12/src/main/java/com/seaofnodes/simple/node/StoreNode.java
index 7c41e767..db8e2ce6 100644
--- a/chapter12/src/main/java/com/seaofnodes/simple/node/StoreNode.java
+++ b/chapter12/src/main/java/com/seaofnodes/simple/node/StoreNode.java
@@ -17,8 +17,8 @@ public class StoreNode extends MemOpNode {
* @param memPtr The ptr to the struct where we will store a value
* @param value Value to be stored
*/
- public StoreNode(String name, int alias, Node memSlice, Node memPtr, Node value) {
- super(name, alias, memSlice, memPtr, value);
+ public StoreNode(String name, int alias, Node ctrl, Node memSlice, Node memPtr, Node value) {
+ super(name, alias, ctrl, memSlice, memPtr, value);
}
@Override