[pypy-commit] pypy default: Translation fix: can't force the EF_XXX here during codewriter, but we
arigo
noreply at buildbot.pypy.org
Wed Oct 8 20:55:23 CEST 2014
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r73845:bedbb718f291
Date: 2014-10-08 19:59 +0200
http://bitbucket.org/pypy/pypy/changeset/bedbb718f291/
Log: Translation fix: can't force the EF_XXX here during codewriter, but
we can make it irrelevant.
diff --git a/rpython/jit/codewriter/jtransform.py b/rpython/jit/codewriter/jtransform.py
--- a/rpython/jit/codewriter/jtransform.py
+++ b/rpython/jit/codewriter/jtransform.py
@@ -1572,8 +1572,7 @@
"%r: jit.not_in_trace() function must return None"
% (op.args[0],))
return self._handle_oopspec_call(op, op.args[1:],
- EffectInfo.OS_NOT_IN_TRACE,
- EffectInfo.EF_CAN_RAISE)
+ EffectInfo.OS_NOT_IN_TRACE)
else:
raise AssertionError("missing support for %r" % oopspec_name)
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
@@ -1393,6 +1393,9 @@
#
allboxes = self._build_allboxes(funcbox, argboxes, descr)
effectinfo = descr.get_extra_info()
+ if effectinfo.oopspecindex == effectinfo.OS_NOT_IN_TRACE:
+ return self.metainterp.do_not_in_trace_call(allboxes, descr)
+
if (assembler_call or
effectinfo.check_forces_virtual_or_virtualizable()):
# residual calls require attention to keep virtualizables in-sync
@@ -1427,8 +1430,6 @@
if effect == effectinfo.EF_LOOPINVARIANT:
return self.execute_varargs(rop.CALL_LOOPINVARIANT, allboxes,
descr, False, False)
- if effectinfo.oopspecindex == effectinfo.OS_NOT_IN_TRACE:
- return self.metainterp.do_not_in_trace_call(allboxes, descr)
exc = effectinfo.check_can_raise()
pure = effectinfo.check_is_elidable()
return self.execute_varargs(rop.CALL, allboxes, descr, exc, pure)
More information about the pypy-commit
mailing list