Author: Armin Rigo <[email protected]>
Branch:
Changeset: r87026:6de307feaa03
Date: 2016-09-12 11:16 +0200
http://bitbucket.org/pypy/pypy/changeset/6de307feaa03/
Log: Clean up some variants of 'conditional_call_*' that are rarely or
never used. Keep only the 'ir' variant.
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
@@ -364,7 +364,7 @@
return getattr(self, 'handle_%s_indirect_call' % kind)(op)
def rewrite_call(self, op, namebase, initialargs, args=None,
- calldescr=None):
+ calldescr=None, force_ir=False):
"""Turn 'i0 = direct_call(fn, i1, i2, ref1, ref2)'
into 'i0 = xxx_call_ir_i(fn, descr, [i1,i2], [ref1,ref2])'.
The name is one of '{residual,direct}_call_{r,ir,irf}_{i,r,f,v}'."""
@@ -374,8 +374,9 @@
lst_i, lst_r, lst_f = self.make_three_lists(args)
reskind = getkind(op.result.concretetype)[0]
if lst_f or reskind == 'f': kinds = 'irf'
- elif lst_i: kinds = 'ir'
+ elif lst_i or force_ir: kinds = 'ir'
else: kinds = 'r'
+ if force_ir: assert kinds == 'ir' # no 'f'
sublists = []
if 'i' in kinds: sublists.append(lst_i)
if 'r' in kinds: sublists.append(lst_r)
@@ -1577,7 +1578,7 @@
assert not
calldescr.get_extra_info().check_forces_virtual_or_virtualizable()
op1 = self.rewrite_call(op, 'conditional_call',
op.args[:2], args=op.args[2:],
- calldescr=calldescr)
+ calldescr=calldescr, force_ir=True)
if self.callcontrol.calldescr_canraise(calldescr):
op1 = [op1, SpaceOperation('-live-', [], None)]
return op1
diff --git a/rpython/jit/metainterp/blackhole.py
b/rpython/jit/metainterp/blackhole.py
--- a/rpython/jit/metainterp/blackhole.py
+++ b/rpython/jit/metainterp/blackhole.py
@@ -1200,28 +1200,12 @@
return cpu.bh_call_v(func, args_i, args_r, args_f, calldescr)
# conditional calls - note that they cannot return stuff
- @arguments("cpu", "i", "i", "I", "d")
- def bhimpl_conditional_call_i_v(cpu, condition, func, args_i, calldescr):
- if condition:
- cpu.bh_call_v(func, args_i, None, None, calldescr)
-
- @arguments("cpu", "i", "i", "R", "d")
- def bhimpl_conditional_call_r_v(cpu, condition, func, args_r, calldescr):
- if condition:
- cpu.bh_call_v(func, None, args_r, None, calldescr)
-
@arguments("cpu", "i", "i", "I", "R", "d")
def bhimpl_conditional_call_ir_v(cpu, condition, func, args_i, args_r,
calldescr):
if condition:
cpu.bh_call_v(func, args_i, args_r, None, calldescr)
- @arguments("cpu", "i", "i", "I", "R", "F", "d")
- def bhimpl_conditional_call_irf_v(cpu, condition, func, args_i, args_r,
- args_f, calldescr):
- if condition:
- cpu.bh_call_v(func, args_i, args_r, args_f, calldescr)
-
@arguments("cpu", "j", "R", returns="i")
def bhimpl_inline_call_r_i(cpu, jitcode, args_r):
return cpu.bh_call_i(jitcode.get_fnaddr_as_int(),
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
@@ -1056,23 +1056,11 @@
opimpl_residual_call_irf_f = _opimpl_residual_call3
opimpl_residual_call_irf_v = _opimpl_residual_call3
- @arguments("box", "box", "boxes", "descr", "orgpc")
- def opimpl_conditional_call_i_v(self, condbox, funcbox, argboxes,
calldescr,
- pc):
- self.do_conditional_call(condbox, funcbox, argboxes, calldescr, pc)
-
- opimpl_conditional_call_r_v = opimpl_conditional_call_i_v
-
@arguments("box", "box", "boxes2", "descr", "orgpc")
def opimpl_conditional_call_ir_v(self, condbox, funcbox, argboxes,
calldescr, pc):
self.do_conditional_call(condbox, funcbox, argboxes, calldescr, pc)
- @arguments("box", "box", "boxes3", "descr", "orgpc")
- def opimpl_conditional_call_irf_v(self, condbox, funcbox, argboxes,
- calldescr, pc):
- self.do_conditional_call(condbox, funcbox, argboxes, calldescr, pc)
-
@arguments("int", "boxes3", "boxes3", "orgpc")
def _opimpl_recursive_call(self, jdindex, greenboxes, redboxes, pc):
targetjitdriver_sd = self.metainterp.staticdata.jitdrivers_sd[jdindex]
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit