Author: Alex Gaynor <[email protected]>
Branch:
Changeset: r67534:fcd59049939d
Date: 2013-10-23 09:19 -0700
http://bitbucket.org/pypy/pypy/changeset/fcd59049939d/
Log: Also log the function we were trying to call which resulted in the
vable escape
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
@@ -1398,7 +1398,7 @@
assembler_call_jd)
if resbox is not None:
self.make_result_of_lastop(resbox)
- self.metainterp.vable_after_residual_call()
+ self.metainterp.vable_after_residual_call(funcbox)
self.metainterp.generate_guard(rop.GUARD_NOT_FORCED, None)
if vablebox is not None:
self.metainterp.history.record(rop.KEEPALIVE, [vablebox], None)
@@ -2437,7 +2437,7 @@
# it by ConstPtr(NULL).
self.stop_tracking_virtualref(i)
- def vable_after_residual_call(self):
+ def vable_after_residual_call(self, funcbox):
vinfo = self.jitdriver_sd.virtualizable_info
if vinfo is not None:
virtualizable_box = self.virtualizable_boxes[-1]
@@ -2445,7 +2445,14 @@
if vinfo.tracing_after_residual_call(virtualizable):
# the virtualizable escaped during CALL_MAY_FORCE.
self.load_fields_from_virtualizable()
- debug_print('vable escaped during a call in: %s' %
self.framestack[-1].jitcode.name)
+ target_name =
self.staticdata.get_name_from_address(funcbox.getaddr())
+ if target_name:
+ target_name = "ConstClass(%s)" % target_name
+ else:
+ target_name = str(funcbox.getaddr())
+ debug_print('vable escaped during a call in %s to %s' % (
+ self.framestack[-1].jitcode.name, target_name
+ ))
raise SwitchToBlackhole(Counters.ABORT_ESCAPE,
raising_exception=True)
# ^^^ we set 'raising_exception' to True because we must still
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit