diff options
Diffstat (limited to 'chapter15/src/main')
| -rw-r--r-- | chapter15/src/main/java/com/seaofnodes/simple/Parser.java | 8 | ||||
| -rw-r--r-- | chapter15/src/main/java/com/seaofnodes/simple/node/MemOpNode.java | 1 |
2 files changed, 4 insertions, 5 deletions
diff --git a/chapter15/src/main/java/com/seaofnodes/simple/Parser.java b/chapter15/src/main/java/com/seaofnodes/simple/Parser.java index ec040b4f..5164fe2b 100644 --- a/chapter15/src/main/java/com/seaofnodes/simple/Parser.java +++ b/chapter15/src/main/java/com/seaofnodes/simple/Parser.java @@ -762,14 +762,14 @@ public class Parser { int fidx = base.find(name); if( fidx == -1 ) throw error("Accessing unknown field '" + name + "' from '" + ptr.str() + "'"); - // Get field type and layout offset - Field f = base._fields[fidx]; + // Get field type and layout offset from base type and field index fidx + Field f = base._fields[fidx]; // Field from field index Node off; - if( name.equals("[]") ) { + if( name.equals("[]") ) { // If field is an array body // Array index math Node idx = require(parseExpression(),"]"); off = new AddNode(con(base.aryBase()),new ShlNode(idx,con(base.aryScale())).peephole()).peephole(); - } else { + } else { // Else normal struct field // Hardwired field offset off = con(base.offset(fidx)); } diff --git a/chapter15/src/main/java/com/seaofnodes/simple/node/MemOpNode.java b/chapter15/src/main/java/com/seaofnodes/simple/node/MemOpNode.java index 7a25d498..4d441951 100644 --- a/chapter15/src/main/java/com/seaofnodes/simple/node/MemOpNode.java +++ b/chapter15/src/main/java/com/seaofnodes/simple/node/MemOpNode.java @@ -18,7 +18,6 @@ public abstract class MemOpNode extends Node { _name = name; _alias = alias; _declaredType = glb; - } public MemOpNode(String name, int alias, Type glb, Node mem, Node ptr, Node off, Node value) { this(name, alias, glb, mem, ptr, off); |
