summaryrefslogtreecommitdiff
path: root/chapter25/src/main/java/com/seaofnodes/simple/print
diff options
context:
space:
mode:
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) {