diff options
Diffstat (limited to 'build-support')
| -rw-r--r-- | build-support/AllocMetrics.java.in | 1 | ||||
| -rw-r--r-- | build-support/measure-alloc.py | 4 |
2 files changed, 5 insertions, 0 deletions
diff --git a/build-support/AllocMetrics.java.in b/build-support/AllocMetrics.java.in index bcf97f0d..f9ee7772 100644 --- a/build-support/AllocMetrics.java.in +++ b/build-support/AllocMetrics.java.in @@ -20,6 +20,7 @@ public class Measure { } static byte[] image(CodeGen c) throws Exception { c.encode(); + EXTERNFUNCTIONS var externalField=Encoding.class.getDeclaredField("_externals");externalField.setAccessible(true); @SuppressWarnings("unchecked") var externals=(Map<Node,String>)externalField.get(c._encoding); var extra=new LinkedHashMap<Node,String>(); 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; |
