Author: Richard Plangger <[email protected]>
Branch: vmprof-native
Changeset: r90700:abc1cf9c6e4a
Date: 2017-03-15 13:07 +0100
http://bitbucket.org/pypy/pypy/changeset/abc1cf9c6e4a/
Log: revert the changes done to rpython/jit/* to support _U_dyn_register
and _U_dyn_cancel (does not exist on mac os x)
diff --git a/pypy/doc/build.rst b/pypy/doc/build.rst
--- a/pypy/doc/build.rst
+++ b/pypy/doc/build.rst
@@ -80,7 +80,7 @@
libssl
_vmprof
- libunwind
+ libunwind (optional, loaded dynamically at runtime)
Make sure to have these libraries (with development headers) installed
before building PyPy, otherwise the resulting binary will not contain
diff --git a/rpython/jit/backend/x86/assembler.py
b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -491,6 +491,7 @@
if not we_are_translated():
# Arguments should be unique
assert len(set(inputargs)) == len(inputargs)
+
self.setup(looptoken)
if self.cpu.HAS_CODEMAP:
self.codemap_builder.enter_portal_frame(jd_id, unique_id,
diff --git a/rpython/jit/metainterp/compile.py
b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -162,10 +162,9 @@
jitcell_token.outermost_jitdriver_sd = jitdriver_sd
return jitcell_token
-def record_loop_or_bridge(metainterp_sd, loop, asminfo):
+def record_loop_or_bridge(metainterp_sd, loop):
"""Do post-backend recordings and cleanups on 'loop'.
"""
- from rpython.rlib.rvmprof import rvmprof
# get the original jitcell token corresponding to jitcell form which
# this trace starts
original_jitcell_token = loop.original_jitcell_token
@@ -175,11 +174,6 @@
wref = weakref.ref(original_jitcell_token)
clt = original_jitcell_token.compiled_loop_token
clt.loop_token_wref = wref
-
- rvmprof.dyn_register_jit_page(original_jitcell_token, asminfo.asmaddr,
- asminfo.asmaddr+asminfo.asmlen)
-
-
for op in loop.operations:
descr = op.getdescr()
# not sure what descr.index is about
@@ -250,9 +244,9 @@
if not we_are_translated():
loop.check_consistency()
jitcell_token.target_tokens = [target_token]
- asminfo = send_loop_to_backend(greenkey, jitdriver_sd, metainterp_sd,
- loop, "loop", runtime_args, metainterp.box_names_memo)
- record_loop_or_bridge(metainterp_sd, loop, asminfo)
+ send_loop_to_backend(greenkey, jitdriver_sd, metainterp_sd, loop, "loop",
+ runtime_args, metainterp.box_names_memo)
+ record_loop_or_bridge(metainterp_sd, loop)
return target_token
def compile_loop(metainterp, greenkey, start, inputargs, jumpargs,
@@ -345,9 +339,9 @@
loop_info.extra_before_label + [loop_info.label_op] +
loop_ops)
if not we_are_translated():
loop.check_consistency()
- asminfo = send_loop_to_backend(greenkey, jitdriver_sd, metainterp_sd,
- loop, "loop", inputargs, metainterp.box_names_memo)
- record_loop_or_bridge(metainterp_sd, loop, asminfo)
+ send_loop_to_backend(greenkey, jitdriver_sd, metainterp_sd, loop, "loop",
+ inputargs, metainterp.box_names_memo)
+ record_loop_or_bridge(metainterp_sd, loop)
loop_info.post_loop_compilation(loop, jitdriver_sd, metainterp,
jitcell_token)
return start_descr
@@ -422,9 +416,9 @@
loop.quasi_immutable_deps = quasi_immutable_deps
target_token = loop.operations[-1].getdescr()
- asminfo = resumekey.compile_and_attach(metainterp, loop, inputargs)
+ resumekey.compile_and_attach(metainterp, loop, inputargs)
- record_loop_or_bridge(metainterp_sd, loop, asminfo)
+ record_loop_or_bridge(metainterp_sd, loop)
return target_token
def get_box_replacement(op, allow_none=False):
@@ -509,12 +503,11 @@
'compiling', None, name, memo)
_log = metainterp_sd.jitlog.log_trace(jl.MARK_TRACE_OPT, metainterp_sd,
None)
_log.write(inputargs, operations)
- asminfo = metainterp_sd.cpu.compile_loop(inputargs,
+ return metainterp_sd.cpu.compile_loop(inputargs,
operations, looptoken,
jd_id=jd_id, unique_id=unique_id,
- log=log, name=name,
logger=metainterp_sd.jitlog)
-
- return asminfo
+ log=log, name=name,
+ logger=metainterp_sd.jitlog)
def do_compile_bridge(metainterp_sd, faildescr, inputargs, operations,
original_loop_token, log=True, memo=None):
@@ -524,10 +517,9 @@
_log = metainterp_sd.jitlog.log_trace(jl.MARK_TRACE_OPT, metainterp_sd,
None)
_log.write(inputargs, operations)
assert isinstance(faildescr, AbstractFailDescr)
- asminfo = metainterp_sd.cpu.compile_bridge(faildescr, inputargs,
operations,
+ return metainterp_sd.cpu.compile_bridge(faildescr, inputargs, operations,
original_loop_token, log=log,
logger=metainterp_sd.jitlog)
- return asminfo
def forget_optimization_info(lst, reset_values=False):
for item in lst:
@@ -597,8 +589,6 @@
if metainterp_sd.warmrunnerdesc is not None: # for tests
metainterp_sd.warmrunnerdesc.memory_manager.keep_loop_alive(original_jitcell_token)
- return asminfo
-
def send_bridge_to_backend(jitdriver_sd, metainterp_sd, faildescr, inputargs,
operations, original_loop_token, memo):
forget_optimization_info(operations)
@@ -844,10 +834,10 @@
self._debug_subinputargs = new_loop.inputargs
self._debug_suboperations = new_loop.operations
propagate_original_jitcell_token(new_loop)
- return send_bridge_to_backend(metainterp.jitdriver_sd,
- metainterp.staticdata, self, inputargs,
- new_loop.operations, new_loop.original_jitcell_token,
- metainterp.box_names_memo)
+ send_bridge_to_backend(metainterp.jitdriver_sd, metainterp.staticdata,
+ self, inputargs, new_loop.operations,
+ new_loop.original_jitcell_token,
+ metainterp.box_names_memo)
def make_a_counter_per_value(self, guard_value_op, index):
assert guard_value_op.getopnum() == rop.GUARD_VALUE
@@ -1045,14 +1035,13 @@
jitdriver_sd = metainterp.jitdriver_sd
new_loop.original_jitcell_token = jitcell_token =
make_jitcell_token(jitdriver_sd)
propagate_original_jitcell_token(new_loop)
- asminfo = send_loop_to_backend(self.original_greenkey,
- metainterp.jitdriver_sd, metainterp_sd, new_loop,
- "entry bridge", orig_inputargs, metainterp.box_names_memo)
+ send_loop_to_backend(self.original_greenkey, metainterp.jitdriver_sd,
+ metainterp_sd, new_loop, "entry bridge",
+ orig_inputargs, metainterp.box_names_memo)
# send the new_loop to warmspot.py, to be called directly the next time
jitdriver_sd.warmstate.attach_procedure_to_interp(
self.original_greenkey, jitcell_token)
metainterp_sd.stats.add_jitcell_token(jitcell_token)
- return asminfo
def compile_trace(metainterp, resumekey, runtime_boxes):
@@ -1122,8 +1111,8 @@
if info.final():
new_trace.inputargs = info.inputargs
target_token = new_trace.operations[-1].getdescr()
- asminfo = resumekey.compile_and_attach(metainterp, new_trace,
inputargs)
- record_loop_or_bridge(metainterp_sd, new_trace, asminfo)
+ resumekey.compile_and_attach(metainterp, new_trace, inputargs)
+ record_loop_or_bridge(metainterp_sd, new_trace)
return target_token
new_trace.inputargs = info.renamed_inputargs
metainterp.retrace_needed(new_trace, info)
diff --git a/rpython/jit/metainterp/history.py
b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -419,14 +419,6 @@
def __init__(self):
# For memory management of assembled loops
self._keepalive_jitcell_tokens = {} # set of other JitCellToken
- self._rvmprof_references = []
-
- def rvmprof_register(self, ref):
- """ Call this method for every loop or bridge that hangs on this
- token. Otherwise the information tracked by libunwind will
- not be freed.
- """
- self._rvmprof_references.append(ref)
def record_jump_to(self, jitcell_token):
assert isinstance(jitcell_token, JitCellToken)
diff --git a/rpython/jit/metainterp/memmgr.py b/rpython/jit/metainterp/memmgr.py
--- a/rpython/jit/metainterp/memmgr.py
+++ b/rpython/jit/metainterp/memmgr.py
@@ -2,7 +2,6 @@
from rpython.rlib.rarithmetic import r_int64
from rpython.rlib.debug import debug_start, debug_print, debug_stop
from rpython.rlib.objectmodel import we_are_translated
-from rpython.rlib.rvmprof import rvmprof
#
# Logic to decide which loops are old and not used any more.
@@ -71,7 +70,6 @@
for looptoken in self.alive_loops.keys():
if (0 <= looptoken.generation < max_generation or
looptoken.invalidated):
- rvmprof.dyn_cancel(looptoken)
del self.alive_loops[looptoken]
newtotal = len(self.alive_loops)
debug_print("Loop tokens freed: ", oldtotal - newtotal)
diff --git a/rpython/jit/metainterp/optimizeopt/version.py
b/rpython/jit/metainterp/optimizeopt/version.py
--- a/rpython/jit/metainterp/optimizeopt/version.py
+++ b/rpython/jit/metainterp/optimizeopt/version.py
@@ -76,7 +76,7 @@
descr, vl.inputargs,
vl.operations, jitcell_token,
metainterp.box_names_memo)
- record_loop_or_bridge(metainterp_sd, vl, asminfo)
+ record_loop_or_bridge(metainterp_sd, vl)
assert asminfo is not None
compiled[version] = (asminfo, descr, version, jitcell_token)
else:
diff --git a/rpython/jit/metainterp/pyjitpl.py
b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -1823,12 +1823,6 @@
self.jitlog.logger_noopt = self.logger_noopt
self.jitlog.logger_ops = self.logger_ops
- from rpython.rlib.rvmprof import rvmprof, cintf
- try:
- self.vmprof = rvmprof._get_vmprof()
- except cintf.VMProfPlatformUnsupported:
- self.vmprof = None
-
self.profiler = ProfilerClass()
self.profiler.cpu = cpu
self.warmrunnerdesc = warmrunnerdesc
diff --git a/rpython/rlib/rvmprof/cintf.py b/rpython/rlib/rvmprof/cintf.py
--- a/rpython/rlib/rvmprof/cintf.py
+++ b/rpython/rlib/rvmprof/cintf.py
@@ -15,7 +15,6 @@
ROOT = py.path.local(rpythonroot).join('rpython', 'rlib', 'rvmprof')
SRC = ROOT.join('src')
SHARED = SRC.join('shared')
-UDIS86 = SHARED.join('libudis86')
BACKTRACE = SHARED.join('libbacktrace')
compile_extra = ['-DRPYTHON_VMPROF', '-g', '-O1']
@@ -45,7 +44,7 @@
_libs = []
eci_kwds = dict(
- include_dirs = [SRC, SHARED, BACKTRACE, UDIS86],
+ include_dirs = [SRC, SHARED, BACKTRACE],
includes = ['rvmprof.h','vmprof_stack.h'],
libraries = _libs,
separate_module_files = [
@@ -55,10 +54,6 @@
SHARED.join('symboltable.c'),
SHARED.join('vmp_stack.c'),
SHARED.join('vmp_dynamic.c'),
- # udis86
- SHARED.join('libudis86/decode.c'),
- SHARED.join('libudis86/itab.c'),
- SHARED.join('libudis86/udis86.c'),
] + separate_module_files,
post_include_bits=[],
compile_extra=compile_extra
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit