summaryrefslogtreecommitdiff
path: root/chapter25/src/main/java/com/seaofnodes/simple/print
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-10-08 16:52:27 -0700
committerCliff Click <cliffc@acm.org>2026-10-08 16:52:27 -0700
commit7096ba70c05eabfe96fd7e69d276b16ac1bd0bb9 (patch)
treebda5cb52577488cb61544c671afa5080297d0381 /chapter25/src/main/java/com/seaofnodes/simple/print
parent87a75c83b75480e65147a4d425fddd14a05df4d9 (diff)
downloadSimple-main.tar.gz
Simple-main.zip
Support putting static data into ELF constant poolmain
Mostly fcn inits in <clinit>
Diffstat (limited to 'chapter25/src/main/java/com/seaofnodes/simple/print')
-rw-r--r--chapter25/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/chapter25/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java b/chapter25/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java
index 994065d8..e8218afd 100644
--- a/chapter25/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java
+++ b/chapter25/src/main/java/com/seaofnodes/simple/print/ASMPrinter.java
@@ -79,12 +79,19 @@ public final class ASMPrinter extends AssemblyAdapter<Node> {
if( !encoded() ) return pools;
int base=(codeEnd+15)&-16;
if( _enc._cpool.size()>0 )
- pools.add(new Pool("Constant Pool",_enc._cpool.buf(),0,base,entries(_enc._bigCons.values(),true)));
+ pools.add(new Pool("Constant Pool",_enc._cpool.buf(),0,base,objects(true)));
base=(base+_enc._cpool.size()+15)&-16;
if( _enc._sdata.size()>0 )
- pools.add(new Pool("Static Data",_enc._sdata.buf(),0,base,entries(_enc._bigCons.values(),false)));
+ pools.add(new Pool("Static Data",_enc._sdata.buf(),0,base,objects(false)));
return pools;
}
+ private ArrayList<Data> objects(boolean ro) {
+ var data=new ArrayList<Data>();
+ for( var obj : _enc._data.entries() )
+ if( !obj.external && obj.readOnly==ro )
+ data.add(new Data(obj,obj.symbol+": "+obj.type.str(),obj.alignment,obj.size));
+ return data;
+ }
// Retain this diagnostic entry point for checking that pool printing never lays out types.
static int printConstantPool(int address, SB sb, BAOS bits, HashMap<Node,Encoding.Relo> relos,
boolean ro, String name) {