From: <ar...@co...> - 2005-09-20 10:38:38
|
Author: arigo Date: Tue Sep 20 12:38:29 2005 New Revision: 17684 Modified: psyco/dist/ (props changed) psyco/dist/py-utils/ivmextract.py psyco/dist/py-utils/xam.py psyco/dist/test/bpnn.py Log: Oups. A bug in ivmextract was preventing ivmoptimize to see a large part of the code buffers. Modified: psyco/dist/py-utils/ivmextract.py ============================================================================== --- psyco/dist/py-utils/ivmextract.py (original) +++ psyco/dist/py-utils/ivmextract.py Tue Sep 20 12:38:29 2005 @@ -50,7 +50,8 @@ f = open(outfilename, 'w') for codebuf in codebufs: if codebuf.data: - for freq, lst in dump(codebuf.data): + data, addr, next, key = codebuf.splitheader() + for freq, lst in dump(data): if len(lst) > 1: print >> f, 'psycodump(%d, [%s]).' % (freq, ', '.join(lst)) Modified: psyco/dist/py-utils/xam.py ============================================================================== --- psyco/dist/py-utils/xam.py (original) +++ psyco/dist/py-utils/xam.py Tue Sep 20 12:38:29 2005 @@ -223,6 +223,21 @@ bigbuf = codeboundary[i][1] return prev, next, bigbuf + def splitheader(self): + data = self.data + addr = self.addr + k = 0 + while data[k:k+1] == '\xCC': + k = k + 1 + if data[k:k+4] == '\x66\x66\x66\x66': + # detected a rt_local_buf_t structure + next, key = struct.unpack('LL', data[k+4:k+12]) + data = data[k+12:] + addr += k+12 + else: + next = key = None + return data, addr, next, key + def __getattr__(self, attr): if attr == 'data': prev, next, bigbuf = self.getboundary() @@ -231,22 +246,14 @@ return data if attr == 'cache_text': # produce the disassembly listing - data = self.data - addr = self.addr - k = 0 - while data[k:k+1] == '\xCC': - k = k + 1 - if data[k:k+4] == '\x66\x66\x66\x66': - # detected a rt_local_buf_t structure - next, key = struct.unpack('LL', data[k+4:k+12]) - data = data[k+12:] - addr += k+12 - self.cache_text = [ - 'Created by promotion of the value 0x%x\n' % key, - 'Next promoted value at buffer 0x%x\n' % next, - ] - else: - self.cache_text = [] + data, addr, next, key = self.splitheader() + self.cache_text = [] + if key is not None: + self.cache_text.append( + 'Created by promotion of the value 0x%x\n' % key) + if next is not None: + self.cache_text.append( + 'Next promoted value at buffer 0x%x\n' % next) self.cache_text += machine_code_dump(data, addr, CodeBuf.machine_code_format) return self.cache_text Modified: psyco/dist/test/bpnn.py ============================================================================== --- psyco/dist/test/bpnn.py (original) +++ psyco/dist/test/bpnn.py Tue Sep 20 12:38:29 2005 @@ -189,3 +189,4 @@ v, t4 = time(demo) v, t5 = time(demo) print t1, t2, t3, t4, t5 + psyco.dumpcodebuf() |