Author: Maciej Fijalkowski <[email protected]>
Branch: vmprof
Changeset: r75460:576aa4c1f37d
Date: 2015-01-21 09:46 +0200
http://bitbucket.org/pypy/pypy/changeset/576aa4c1f37d/
Log: fight a bit with virtual ips conflicting with syscalls
diff --git a/pypy/module/_vmprof/__init__.py b/pypy/module/_vmprof/__init__.py
--- a/pypy/module/_vmprof/__init__.py
+++ b/pypy/module/_vmprof/__init__.py
@@ -4,7 +4,6 @@
"""
Write me :)
"""
-
appleveldefs = {
}
diff --git a/pypy/module/_vmprof/interp_vmprof.py
b/pypy/module/_vmprof/interp_vmprof.py
--- a/pypy/module/_vmprof/interp_vmprof.py
+++ b/pypy/module/_vmprof/interp_vmprof.py
@@ -3,11 +3,11 @@
from rpython.translator.tool.cbuild import ExternalCompilationInfo
from rpython.rtyper.annlowlevel import cast_instance_to_gcref,
cast_base_ptr_to_instance
from rpython.rlib.objectmodel import we_are_translated, CDefinedIntSymbolic
-from rpython.rlib import jit, rgc, rposix
+from rpython.rlib import jit, rposix
from rpython.tool.pairtype import extendabletype
from pypy.interpreter.baseobjspace import W_Root
-from pypy.interpreter.error import OperationError, oefmt, wrap_oserror
-from pypy.interpreter.gateway import interp2app, unwrap_spec
+from pypy.interpreter.error import oefmt, wrap_oserror
+from pypy.interpreter.gateway import unwrap_spec
from pypy.interpreter.pyframe import PyFrame
from pypy.interpreter.pycode import PyCode
@@ -177,13 +177,13 @@
class VMProf(object):
def __init__(self):
- self.virtual_ip = 0
+ self.virtual_ip = 0x7000000000000000
self.is_enabled = False
self.ever_enabled = False
self.strbuf = lltype.malloc(rffi.CCHARP.TO, 1024, flavor='raw',
immortal=True, zero=True)
def get_next_virtual_IP(self):
- self.virtual_ip -= 1
+ self.virtual_ip += 1
return self.virtual_ip
@jit.dont_look_inside
diff --git a/rpython/tool/jitlogparser/parser.py
b/rpython/tool/jitlogparser/parser.py
--- a/rpython/tool/jitlogparser/parser.py
+++ b/rpython/tool/jitlogparser/parser.py
@@ -375,24 +375,37 @@
i += 1
return res
+def parse_addresses(part, callback=None):
+ hex_re = '0x(-?[\da-f]+)'
+ addrs = {}
+ if callback is None:
+ def callback(addr, stop_addr, bootstrap_addr, name, code_name):
+ addrs.setdefault(bootstrap_addr, []).append(name)
+ for entry in part:
+ m = re.search('has address %(hex)s to %(hex)s \(bootstrap %(hex)s' %
+ {'hex': hex_re}, entry)
+ if not m:
+ # a bridge
+ m = re.search('has address ' + hex_re + ' to ' + hex_re, entry)
+ addr = int(m.group(1), 16)
+ bootstrap_addr = addr
+ stop_addr = int(m.group(2), 16)
+ entry = entry.lower()
+ m = re.search('guard ' + hex_re, entry)
+ name = 'guard ' + m.group(1)
+ code_name = 'bridge'
+ else:
+ name = entry[:entry.find('(') - 1].lower()
+ addr = int(m.group(1), 16)
+ stop_addr = int(m.group(2), 16)
+ bootstrap_addr = int(m.group(3), 16)
+ code_name = entry[entry.find('(') + 1:m.span(0)[0] - 2]
+ callback(addr, stop_addr, bootstrap_addr, name, code_name)
+ return addrs
def import_log(logname, ParserCls=SimpleParser):
log = parse_log_file(logname)
- hex_re = '0x(-?[\da-f]+)'
- addrs = {}
- for entry in extract_category(log, 'jit-backend-addr'):
- m = re.search('bootstrap ' + hex_re, entry)
- if not m:
- # a bridge
- m = re.search('has address ' + hex_re, entry)
- addr = int(m.group(1), 16)
- entry = entry.lower()
- m = re.search('guard ' + hex_re, entry)
- name = 'guard ' + m.group(1)
- else:
- name = entry[:entry.find('(') - 1].lower()
- addr = int(m.group(1), 16)
- addrs.setdefault(addr, []).append(name)
+ addrs = parse_addresses(extract_category(log, 'jit-backend-addr'))
from rpython.jit.backend.tool.viewcode import World
world = World()
for entry in extract_category(log, 'jit-backend-dump'):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit