[pypy-commit] pypy default: (arigo, bivab) Add a test that checks the behaviour of calling functions stored in boxes
bivab
noreply at buildbot.pypy.org
Fri Jan 20 17:17:25 CET 2012
Author: David Schneider <david.schneider at picle.org>
Branch:
Changeset: r51551:509859199b7d
Date: 2012-01-20 17:14 +0100
http://bitbucket.org/pypy/pypy/changeset/509859199b7d/
Log: (arigo, bivab) Add a test that checks the behaviour of calling
functions stored in boxes
diff --git a/pypy/jit/backend/test/runner_test.py b/pypy/jit/backend/test/runner_test.py
--- a/pypy/jit/backend/test/runner_test.py
+++ b/pypy/jit/backend/test/runner_test.py
@@ -551,6 +551,28 @@
res = self.execute_operation(rop.CALL, [funcbox] + map(BoxInt, args), 'int', descr=calldescr)
assert res.value == func(*args)
+ def test_call_box_func(self):
+ def a(a1, a2):
+ return a1 + a2
+ def b(b1, b2):
+ return b1 * b2
+
+ arg1 = 40
+ arg2 = 2
+ for f in [a, b]:
+ TP = lltype.Signed
+ FPTR = self.Ptr(self.FuncType([TP, TP], TP))
+ func_ptr = llhelper(FPTR, f)
+ FUNC = deref(FPTR)
+ funcconst = self.get_funcbox(self.cpu, func_ptr)
+ funcbox = funcconst.clonebox()
+ calldescr = self.cpu.calldescrof(FUNC, FUNC.ARGS, FUNC.RESULT,
+ EffectInfo.MOST_GENERAL)
+ res = self.execute_operation(rop.CALL,
+ [funcbox, BoxInt(arg1), BoxInt(arg2)],
+ 'int', descr=calldescr)
+ assert res.getint() == f(arg1, arg2)
+
def test_call_stack_alignment(self):
# test stack alignment issues, notably for Mac OS/X.
# also test the ordering of the arguments.
More information about the pypy-commit
mailing list