summaryrefslogtreecommitdiff
path: root/build-support/measure-alloc.py
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 /build-support/measure-alloc.py
parent87a75c83b75480e65147a4d425fddd14a05df4d9 (diff)
downloadSimple-7096ba70c05eabfe96fd7e69d276b16ac1bd0bb9.tar.gz
Simple-7096ba70c05eabfe96fd7e69d276b16ac1bd0bb9.zip
Support putting static data into ELF constant poolmain
Mostly fcn inits in <clinit>
Diffstat (limited to 'build-support/measure-alloc.py')
-rw-r--r--build-support/measure-alloc.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/build-support/measure-alloc.py b/build-support/measure-alloc.py
index 61ae31e2..ed899713 100644
--- a/build-support/measure-alloc.py
+++ b/build-support/measure-alloc.py
@@ -9,6 +9,10 @@ subs={'CHAPTER':str(ch),'OPSTART':'e.opStart(n)' if ch==25 else 'e._opStart[n._n
'OPLEN':'e.opLen(n)' if ch==25 else 'e._opLen[n._nid]',
'CONSTRUCTOR':'new CodeGen(src,123L,true)' if ch==25 else 'new CodeGen(src,TypeInteger.BOT,123L,true)',
'EXPORT':'c.exportELF(true,false)' if ch==25 else 'c.exportELF(null)',
+ 'EXTERNFUNCTIONS':'''var functionField=CodeGen.class.getDeclaredField("_externFunc");functionField.setAccessible(true);
+ @SuppressWarnings("unchecked") var functionNames=(Map<Integer,String>)functionField.get(c);
+ for(String name:functionNames.values())
+ c._encoding._externalAddresses.put(name,name.equals("calloc")?-4:name.equals("write")?-8:name.equals("read")?-12:-16);''' if ch==25 else '',
'EXTERNDATA':'c._externDataAddresses.put("counter",0x3800);c._externDataAddresses.put("errno",0x3808);' if ch==25 else '',
'RESUME':'return c.loopTree().instSelect(cpu,"SystemV").GCM().localSched();' if ch==21 else 'return c.driver(CodeGen.Phase.LocalSched,cpu,"SystemV");',
'COPYPOOLS':'''int cp=(e._bits.size()+15)&-16,sd=(cp+e._cpool.size()+15)&-16;