From 91c6ed0f6978215a0448f5bf91600e5fdb2a77d8 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Wed, 9 Sep 2026 17:00:59 -0700 Subject: Remove a bunch of dead or unused code --- .../main/java/com/seaofnodes/simple/Parser.java | 4 +- .../com/seaofnodes/simple/node/BulkMemPhiNode.java | 2 +- .../java/com/seaofnodes/simple/node/FunNode.java | 5 - .../java/com/seaofnodes/simple/node/LoopNode.java | 2 +- .../com/seaofnodes/simple/node/MemMergeNode.java | 146 +++------------------ .../main/java/com/seaofnodes/simple/node/Node.java | 2 +- .../java/com/seaofnodes/simple/node/ScopeNode.java | 2 +- .../java/com/seaofnodes/simple/node/StoreNode.java | 2 +- .../main/java/com/seaofnodes/simple/type/Type.java | 3 - .../java/com/seaofnodes/simple/type/TypeMem.java | 11 +- .../com/seaofnodes/simple/type/TypeMemPtr.java | 1 - .../com/seaofnodes/simple/type/TypeStruct.java | 17 +-- 12 files changed, 35 insertions(+), 162 deletions(-) (limited to 'chapter25/src/main/java/com/seaofnodes') diff --git a/chapter25/src/main/java/com/seaofnodes/simple/Parser.java b/chapter25/src/main/java/com/seaofnodes/simple/Parser.java index e87fec35..7f02080e 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/Parser.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/Parser.java @@ -157,7 +157,7 @@ public class Parser { // precise alias update. ScopeNode treats this as one opaque value. private Node mergeAlias(Node bulk, int alias, Node precise) { assert bulk != null : "Missing bulk memory for alias #"+alias; - MemMergeNode merge = new MemMergeNode(false,null,bulk); + MemMergeNode merge = new MemMergeNode(null,bulk); merge.alias(alias,precise); return peep(merge); } @@ -1254,7 +1254,7 @@ public class Parser { Field escaped = field._final ? field : Field.make(field._fname,storage,field._alias,true); pub.keep(); Node esc = new EscapeNode(escaped,self,priv,pub).peephole(); - MemMergeNode merge = new MemMergeNode(false,null,pub); + MemMergeNode merge = new MemMergeNode(null,pub); merge.alias(field._alias,esc); Node next = merge.peephole(); pub.unkeep(); diff --git a/chapter25/src/main/java/com/seaofnodes/simple/node/BulkMemPhiNode.java b/chapter25/src/main/java/com/seaofnodes/simple/node/BulkMemPhiNode.java index cab85e44..68f0ecee 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/node/BulkMemPhiNode.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/node/BulkMemPhiNode.java @@ -248,7 +248,7 @@ public class BulkMemPhiNode extends PhiNode { // which the bulk has already excluded. The named alias is newly supplied // (or replaces its old slice). MemMergeNode aggregate(Node bulk, int alias, Node precise) { - MemMergeNode mmm = new MemMergeNode(false,null,bulk); + MemMergeNode mmm = new MemMergeNode(null,bulk); for( int old = _aliases.nextSetBit(0); old >= 0; old = _aliases.nextSetBit(old+1) ) if( old != alias ) mmm.alias(old,precisePhi(old)); diff --git a/chapter25/src/main/java/com/seaofnodes/simple/node/FunNode.java b/chapter25/src/main/java/com/seaofnodes/simple/node/FunNode.java index 419cf083..890a23b0 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/node/FunNode.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/node/FunNode.java @@ -33,11 +33,6 @@ public class FunNode extends RegionNode { _compunit = compunit; } public FunNode( Parser.Lexer loc, TypeFunPtr sig, String name, CompUnit compunit, Node... nodes ) { this(loc,nodes,sig,name,compunit,false); } - public FunNode( TypeFunPtr sig, String name, boolean ext ) { - this(null,null,sig,name,null,ext); - assert ext; // No need for ext - throw Utils.TODO(); - } public FunNode( FunNode fun ) { super( fun, fun._loc ); _sig = fun.sig(); diff --git a/chapter25/src/main/java/com/seaofnodes/simple/node/LoopNode.java b/chapter25/src/main/java/com/seaofnodes/simple/node/LoopNode.java index 44ca35d8..90544c00 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/node/LoopNode.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/node/LoopNode.java @@ -58,7 +58,7 @@ public class LoopNode extends RegionNode { // Now fold control into the exit. Might have 1 valid exit, or an // XCtrl or a bunch of prior NeverNode exits. Node top = ConstantNode.make(Type.TOP).peephole(); - Node memout = new MemMergeNode(false); + Node memout = new MemMergeNode(); memout.addDef(f); // placeholder for control memout.addDef(top); for( Node u : _outputs ) diff --git a/chapter25/src/main/java/com/seaofnodes/simple/node/MemMergeNode.java b/chapter25/src/main/java/com/seaofnodes/simple/node/MemMergeNode.java index aad3e677..87d982f1 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/node/MemMergeNode.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/node/MemMergeNode.java @@ -14,30 +14,18 @@ import java.util.*; */ public class MemMergeNode extends Node { - /* - * In-Progress is the mutable construction form. No optimizations are - * allowed. If not "in progress" then normal peeps work. - */ - public final boolean _inProgress; - - public MemMergeNode( boolean inProgress) { _type = TypeMem.BOT; _inProgress = inProgress; } - public MemMergeNode( boolean inProgress, Node ...nodes) { super(nodes); _type = TypeMem.BOT; _inProgress = inProgress; } - public MemMergeNode(MemMergeNode mem) { super(mem); _inProgress = false; } + public MemMergeNode( Node ...nodes) { super(nodes); _type = TypeMem.BOT; } + public MemMergeNode(MemMergeNode mem) { super(mem); } @Override public Tag serialTag() { return Tag.MemMerge; } public void packed( BAOS baos, HashMap strs, HashMap types, IdentityHashMap anodes ) { baos.packed1(nIns()); } - static Node make( BAOS bais ) { Node mem = new MemMergeNode(false); mem.setDefX(bais.packed1()-1,null); return mem; } - - - // The mutable construction form is "in progress"; otherwise this is a - // graph-semantic memory merge. - boolean inProgress() { return _inProgress; } + static Node make( BAOS bais ) { Node mem = new MemMergeNode(); mem.setDefX(bais.packed1()-1,null); return mem; } @Override public String label() { return "ALLMEM"; } @Override public boolean isMem() { return true; } @Override public StringBuilder _print1(StringBuilder sb, BitSet visited) { - sb.append(_inProgress ? "Merge[" : "MEM[ "); + sb.append("MEM[ "); for( int j=2; j StopCUNode.make(bais); case Region-> RegionNode.make(bais); - default -> throw Utils.TODO(); + default -> throw Utils.TODO("Should not reach here"); }; } }; diff --git a/chapter25/src/main/java/com/seaofnodes/simple/node/ScopeNode.java b/chapter25/src/main/java/com/seaofnodes/simple/node/ScopeNode.java index dd5fa541..3eabac81 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/node/ScopeNode.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/node/ScopeNode.java @@ -52,7 +52,7 @@ public class ScopeNode extends MemMergeNode { // A new ScopeNode public ScopeNode() { - super(true); + super(); _vars = new Ary<>(Var .class); _kinds = new Ary<>(Kind.class); _guards = new Ary<>(Node.class); diff --git a/chapter25/src/main/java/com/seaofnodes/simple/node/StoreNode.java b/chapter25/src/main/java/com/seaofnodes/simple/node/StoreNode.java index 04fbc781..baf983f3 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/node/StoreNode.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/node/StoreNode.java @@ -157,7 +157,7 @@ public class StoreNode extends MemOpNode { } MemMergeNode mmm = mem() instanceof BulkMemPhiNode bulk ? bulk.aggregate(mem(),fld._alias,st) - : new MemMergeNode(false,null,mem()); + : new MemMergeNode(null,mem()); if( !(mem() instanceof BulkMemPhiNode) ) mmm.alias(fld._alias,st); return mmm.init(); diff --git a/chapter25/src/main/java/com/seaofnodes/simple/type/Type.java b/chapter25/src/main/java/com/seaofnodes/simple/type/Type.java index fbbfbada..39203a09 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/type/Type.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/type/Type.java @@ -343,9 +343,6 @@ public class Type /*implements Cloneable*/ { // Make a zero version of this type, 0 for integers and null for pointers. public Type makeZero() { return Type.NIL; } - //// Is forward-reference - //public boolean isFRef() { return false; } - // Cap at limits public Type oob() { return isHigh() ? TOP : BOTTOM; } diff --git a/chapter25/src/main/java/com/seaofnodes/simple/type/TypeMem.java b/chapter25/src/main/java/com/seaofnodes/simple/type/TypeMem.java index 106dee49..dbcc9056 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/type/TypeMem.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/type/TypeMem.java @@ -79,7 +79,6 @@ public class TypeMem extends Type { // Make a private memory public static TypeMem makePrivate(Type t) { return make(1,t,true,false,false,escapeFIDX(XInt.EMPTY,t), escapeAlias(XInt.EMPTY,t)); } - public TypeMem makeFrom(Type t) { return make(_alias,t,_one,_clz,_final,_escFs,_escAs); } public TypeMem makeFrom(int alias) { return make(alias,_t,_one,_clz,_final,_escFs,_escAs); } public TypeMem makeFrom(int[] fidxes, int[] aliases) { return make(_alias,_t,_one,_clz,_final,fidxes,aliases); @@ -92,10 +91,6 @@ public class TypeMem extends Type { public TypeMem escapesFrom(Type t) { return make(_alias,_t,_one,_clz,_final, escapeFIDX(_escFs,t), escapeAlias(_escAs,t)); } - // Existing escapes plus `t` escapes - public TypeMem escapesFrom(int alias, Type t) { - return make(alias,t,_one,_clz,_final, escapeFIDX(_escFs,t), escapeAlias(_escAs,t)); - } public TypeMem escapesAliases(Type t) { return make(_alias,_t,_one,_clz,_final, _escFs, escapeAlias(_escAs,t)); } @@ -146,7 +141,7 @@ public class TypeMem extends Type { TypeMem d = malloc(_alias,null,!_one,!_clz,!_final, XInt.dual(_escFs), XInt.dual(_escAs)); (_dual = d)._dual = this; // Cross link duals d._t = _t._terned ? _t.dual() : _t.rdual(); - if( d._alias==1 && !d._one && !d._t.isHigh() ) d._final = false; + if( d._alias==1 && !d._one ) { assert !d._t.isHigh(); d._final = false; } return d; } @@ -154,8 +149,8 @@ public class TypeMem extends Type { @Override public boolean isHigh() { return _t.isHigh(); } @Override boolean _isConstant() { return _one && _clz && _alias!= 1 && _t._isConstant(); } @Override public int log_size() { throw Utils.TODO("Should not reach here: memory has no scalar storage size"); } - @Override boolean _isFinal() { return _t._isFinal(); } - @Override TypeMem _makeStorage() { return make(_alias,_t._makeStorage(),_one,_clz,_final,_escFs,_escAs); } + @Override boolean _isFinal() { throw Utils.TODO("Should not reach here"); } + @Override TypeMem _makeStorage() { throw Utils.TODO("Should not reach here"); /*return make(_alias,_t._makeStorage(),_one,_clz,_final,_escFs,_escAs);*/ } @Override TypeMem _close( String name, HashMap TYPES ) { return malloc(_alias,_t._close(name, TYPES ),_one,_clz,_final,_escFs,_escAs); } diff --git a/chapter25/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java b/chapter25/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java index 5a2693c9..5b9cf7e1 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/type/TypeMemPtr.java @@ -73,7 +73,6 @@ public class TypeMemPtr extends TypeNil { /** Public-memory shape: nullable and non-singleton, preserving the referent. */ @Override TypeMemPtr _makeStorage() { return make((byte)3,_obj._makeStorage(),false,true); } @Override TypeMemPtr makeFrom(byte nil) { return nil==_nil ? this : make(nil, _obj, _one, _pub); } - public TypeMemPtr makeHigh(byte nil) { return make(nil,_obj.makeHigh(),false); } @Override public Type nonZero() { return makeFrom((byte)(_nil <= 1 ? 1 : 2)); } // An abstract pointer, pointing to either a Struct or an Array. diff --git a/chapter25/src/main/java/com/seaofnodes/simple/type/TypeStruct.java b/chapter25/src/main/java/com/seaofnodes/simple/type/TypeStruct.java index e2011b38..a32e812c 100644 --- a/chapter25/src/main/java/com/seaofnodes/simple/type/TypeStruct.java +++ b/chapter25/src/main/java/com/seaofnodes/simple/type/TypeStruct.java @@ -151,18 +151,11 @@ public class TypeStruct extends Type { Field.make("[con]",con ,bodyAlias,true)); } - public TypeStruct makeHigh() { - Field[] fs = new Field[_fields.length]; - for( int i=0; i<_fields.length; i++ ) - fs[i] = _fields[i].makeFrom(Type.TOP); - return make(_name,_open,_fref,fs); - } - public TypeStruct makeInit() { Field[] fs = new Field[_fields.length]; for( int i=0; i<_fields.length; i++ ) { Type zero = _fields[i]._t.makeZero(); - fs[i] = _fields[i].makeFrom(_fields[i]._t != Type.BOTTOM && _fields[i]._t != Type.TOP && zero.isa(_fields[i]._t) ? zero : Type.TOP); + fs[i] = _fields[i].makeFrom(_fields[i]._t != Type.BOTTOM && zero.isa(_fields[i]._t) ? zero : Type.TOP); } return make(_name,_open,_fref,fs); } @@ -202,7 +195,7 @@ public class TypeStruct extends Type { TypeStruct ts = (TypeStruct)VISIT.get(namePlusFinal); if( ts!=null ) return ts; TypeStruct base = name==null ? (TypeStruct)TYPES.get(_name) : this; - if( base == null ) base = this; + assert base != null; boolean open = base._fref ? base._open : name != _name && name != null && _open; ts = base.recurPre(namePlusFinal, _name, open, base._fref ); Field[] flds = ts._fields; @@ -404,11 +397,9 @@ public class TypeStruct extends Type { } @Override boolean _isConstant() { - if( VISIT.containsKey(_uid) ) return true; // Cycles assume constant + assert !_open; // who is asking about constant open structs? if( _open ) return false; // Infinite BOT fields + assert !VISIT.containsKey(_uid); //expect constants to not include self-cycles. if( VISIT.containsKey(_uid) ) return true; // Cycles assume constant VISIT.put(_uid,this); - if( _open ) return false; // Infinite BOT fields - // Special case for constant arrays - // Check all fields for being constant for( Field field : _fields ) if( !field._isConstant() ) -- cgit v1.2.3