From: Armin R. <ar...@us...> - 2002-02-26 23:08:06
|
Update of /cvsroot/psyco/psyco/py-utils In directory usw-pr-cvs1:/tmp/cvs-serv17507/py-utils Modified Files: httpxam.py xam.py Log Message: Python 2.1 compatibility Index: httpxam.py =================================================================== RCS file: /cvsroot/psyco/psyco/py-utils/httpxam.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** httpxam.py 26 Dec 2001 17:01:00 -0000 1.2 --- httpxam.py 26 Feb 2002 23:08:00 -0000 1.3 *************** *** 22,26 **** else: text += "[%x] %s" % (vi.addr, vi.gettext()) ! if vi.addr in d: text += " (already seen above)" else: --- 22,26 ---- else: text += "[%x] %s" % (vi.addr, vi.gettext()) ! if d.has_key(vi.addr): text += " (already seen above)" else: *************** *** 80,84 **** data = '<p>Other code buffers pointing to this one:</p><ul>\n' for c in codebufs: # display them in original load order ! if c in rev: if rev[c] == 1: extra = '' --- 80,84 ---- data = '<p>Other code buffers pointing to this one:</p><ul>\n' for c in codebufs: # display them in original load order ! if rev.has_key(c): if rev[c] == 1: extra = '' Index: xam.py =================================================================== RCS file: /cvsroot/psyco/psyco/py-utils/xam.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** xam.py 18 Feb 2002 11:07:44 -0000 1.6 --- xam.py 26 Feb 2002 23:08:01 -0000 1.7 *************** *** 1,2 **** --- 1,3 ---- + from __future__ import nested_scopes import os, sys, re, htmlentitydefs, struct from psyco import _psyco *************** *** 37,41 **** d[match.group(2)] = long(match.group(1), 16) g.close() ! if symb1 in d: delta = addr1 - d[symb1] else: --- 38,42 ---- d[match.group(2)] = long(match.group(1), 16) g.close() ! if d.has_key(symb1): delta = addr1 - d[symb1] else: *************** *** 80,83 **** --- 81,89 ---- + re_int = re.compile(r"(\-?\d+)$") + re_ctvinfo = re.compile(r"ct (\d+) (\-?\d+)$") + re_rtvinfo = re.compile(r"rt (\-?\d+)$") + re_vtvinfo = re.compile(r"vt 0x([0-9a-fA-F]+)$") + LOC_LOCALS_PLUS = 2 *************** *** 85,89 **** def __init__(self, mode, co_filename, co_name, nextinstr, ! addr, data, vlocals): self.mode = mode self.co_filename = co_filename --- 91,95 ---- def __init__(self, mode, co_filename, co_name, nextinstr, ! addr, data, stackdepth): self.mode = mode self.co_filename = co_filename *************** *** 92,103 **** self.addr = addr self.data = data ! self.vlocals = vlocals #self.reverse_lookup = [] # list of (offset, codebuf pointing there) self.specdict = [] for i in range(len(data)): symbols[self.addr+i] = self ! sz = struct.calcsize('l') ! for i in range(sz, len(data)+1): ! offset, = struct.unpack('l', data[i-sz:i]) rawtargets.setdefault(addr+i+offset, {})[self] = 1 --- 98,108 ---- self.addr = addr self.data = data ! self.stackdepth = stackdepth #self.reverse_lookup = [] # list of (offset, codebuf pointing there) self.specdict = [] for i in range(len(data)): symbols[self.addr+i] = self ! for i in range(4, len(data)+1): ! offset, = struct.unpack('l', data[i-4:i]) rawtargets.setdefault(addr+i+offset, {})[self] = 1 *************** *** 146,151 **** end = start + len(self.data) for addr in range(start, end): ! if addr in rawtargets: ! for codebuf in rawtargets[addr]: maybe[codebuf] = 1 for codebuf in maybe.keys(): --- 151,156 ---- end = start + len(self.data) for addr in range(start, end): ! if rawtargets.has_key(addr): ! for codebuf in rawtargets[addr].keys(): maybe[codebuf] = 1 for codebuf in maybe.keys(): *************** *** 155,160 **** --- 160,203 ---- self.reverse_lookup.append((addr-start, codebuf)) return self.reverse_lookup + if attr == 'vlocals': + self.dumpfile.seek(self.vlocalsofs) + self.vlocals = self.load_vi_array({0: None}) + return self.vlocals raise AttributeError, attr + def load_vi_array(self, d): + dumpfile = self.dumpfile + match = re_int.match(dumpfile.readline()) + assert match + count = int(match.group(1)) + a = [] + for i in range(count): + line = dumpfile.readline() + match = re_int.match(line) + assert match + addr = long(match.group(1)) + if d.has_key(addr): + vi = d[addr] + else: + line = dumpfile.readline() + match = re_ctvinfo.match(line) + if match: + vi = CompileTimeVInfo(int(match.group(1)), + long(match.group(2))) + else: + match = re_rtvinfo.match(line) + if match: + vi = RunTimeVInfo(long(match.group(1)), self.stackdepth) + else: + match = re_vtvinfo.match(line) + assert match + vi = VirtualTimeVInfo(long(match.group(1), 16)) + d[addr] = vi + vi.addr = addr + vi.array = self.load_vi_array(d) + a.append(vi) + a.reverse() + return a + def get_next_instr(self): if self.nextinstr >= 0: *************** *** 189,194 **** if match: addr = long(match.group(1), 16) ! if addr not in seen: ! if addr in self.codemap and snapshot: for proxy in self.codemap[addr]: data.append(snapshot(proxy)) --- 232,237 ---- if match: addr = long(match.group(1), 16) ! if not seen.has_key(addr): ! if self.codemap.has_key(addr) and snapshot: for proxy in self.codemap[addr]: data.append(snapshot(proxy)) *************** *** 254,302 **** re_codebuf = re.compile(r"CodeBufferObject 0x([0-9a-fA-F]+) (\d+) (\-?\d+) \'(.*?)\' \'(.*?)\' (\-?\d+) \'(.*?)\'$") re_specdict = re.compile(r"spec_dict 0x([0-9a-fA-F]+)") re_spec1 = re.compile(r"0x([0-9a-fA-F]+)\s(.*)$") - re_int = re.compile(r"(\-?\d+)$") - re_ctvinfo = re.compile(r"ct (\d+) (\-?\d+)$") - re_rtvinfo = re.compile(r"rt (\-?\d+)$") - re_vtvinfo = re.compile(r"vt 0x([0-9a-fA-F]+)$") - - def load_vi_array(d): - match = re_int.match(dumpfile.readline()) - assert match - count = int(match.group(1)) - a = [] - for i in range(count): - line = dumpfile.readline() - match = re_int.match(line) - assert match - addr = long(match.group(1)) - if addr in d: - vi = d[addr] - else: - line = dumpfile.readline() - match = re_ctvinfo.match(line) - if match: - vi = CompileTimeVInfo(int(match.group(1)), - long(match.group(2))) - else: - match = re_rtvinfo.match(line) - if match: - vi = RunTimeVInfo(long(match.group(1)), stackdepth) - else: - match = re_vtvinfo.match(line) - assert match - vi = VirtualTimeVInfo(long(match.group(1), 16)) - d[addr] = vi - vi.addr = addr - vi.array = load_vi_array(d) - a.append(vi) - a.reverse() - return a codebufs = [] dumpfile = open(filename, 'rb') ! dumpfile.seek(0,2) ! filesize = float(dumpfile.tell()) nextp = 0.1 - dumpfile.seek(0,0) for filename in symbolfiles: line = dumpfile.readline() --- 297,313 ---- re_codebuf = re.compile(r"CodeBufferObject 0x([0-9a-fA-F]+) (\d+) (\-?\d+) \'(.*?)\' \'(.*?)\' (\-?\d+) \'(.*?)\'$") re_specdict = re.compile(r"spec_dict 0x([0-9a-fA-F]+)") + re_vinfo_array = re.compile(r"vinfo_array") re_spec1 = re.compile(r"0x([0-9a-fA-F]+)\s(.*)$") codebufs = [] dumpfile = open(filename, 'rb') ! bufcount, = struct.unpack("i", dumpfile.read(4)) ! buftable = struct.unpack("l"*bufcount, dumpfile.read(4*bufcount)) ! if buftable: ! filesize = buftable[0] ! else: ! filesize = sys.maxint ! filesize *= 1.0 nextp = 0.1 for filename in symbolfiles: line = dumpfile.readline() *************** *** 307,310 **** --- 318,322 ---- line = dumpfile.readline() if not line: + print "Note: unexpected end of file" break #print line.strip() *************** *** 316,327 **** nextp += 0.1 size = int(match.group(2)) - stackdepth = int(match.group(3)) - vlocals = load_vi_array({0: None}) data = dumpfile.read(size) assert len(data) == size codebuf = CodeBuf(match.group(7), match.group(4), match.group(5), int(match.group(6)), long(match.group(1), 16), ! data, vlocals) codebuf.complete_list = codebufs codebufs.insert(0, codebuf) else: --- 328,340 ---- nextp += 0.1 size = int(match.group(2)) data = dumpfile.read(size) assert len(data) == size codebuf = CodeBuf(match.group(7), match.group(4), match.group(5), int(match.group(6)), long(match.group(1), 16), ! data, int(match.group(3))) codebuf.complete_list = codebufs + codebuf.dumpfile = dumpfile + codebuf.vlocalsofs = buftable[0] + buftable = buftable[1:] codebufs.insert(0, codebuf) else: *************** *** 341,347 **** assert match codebuf.spec_dict(match.group(2), long(match.group(1), 16)) else: raise "invalid line", line - dumpfile.close() codemap = {} for codebuf in codebufs: --- 354,362 ---- assert match codebuf.spec_dict(match.group(2), long(match.group(1), 16)) + elif re_vinfo_array.match(line): + assert len(codebufs) == bufcount + break else: raise "invalid line", line codemap = {} for codebuf in codebufs: |