[pypy-commit] pypy ppc-jit-backend: add test to ensure that arguments are passed correctly

hager noreply at buildbot.pypy.org
Tue Jan 10 10:47:05 CET 2012


Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r51191:dd765153417e
Date: 2012-01-10 10:46 +0100
http://bitbucket.org/pypy/pypy/changeset/dd765153417e/

Log:	add test to ensure that arguments are passed correctly

diff --git a/pypy/jit/backend/ppc/test/test_runner.py b/pypy/jit/backend/ppc/test/test_runner.py
--- a/pypy/jit/backend/ppc/test/test_runner.py
+++ b/pypy/jit/backend/ppc/test/test_runner.py
@@ -1,5 +1,16 @@
 from pypy.jit.backend.test.runner_test import LLtypeBackendTest
 from pypy.jit.backend.ppc.runner import PPC_64_CPU
+from pypy.jit.tool.oparser import parse
+from pypy.jit.metainterp.history import (AbstractFailDescr,
+                                         AbstractDescr,
+                                         BasicFailDescr,
+                                         BoxInt, Box, BoxPtr,
+                                         JitCellToken, TargetToken,
+                                         ConstInt, ConstPtr,
+                                         BoxObj, Const,
+                                         ConstObj, BoxFloat, ConstFloat)
+from pypy.rpython.lltypesystem import lltype, llmemory, rstr, rffi, rclass
+from pypy.jit.codewriter.effectinfo import EffectInfo
 import py
 
 class FakeStats(object):
@@ -13,3 +24,34 @@
 
     def test_cond_call_gc_wb_array_card_marking_fast_path(self):
         py.test.skip("unsure what to do here")
+
+    def test_compile_loop_many_int_args(self):
+        for numargs in range(1, 16):
+            for _ in range(numargs):
+                self.cpu.reserve_some_free_fail_descr_number()
+            ops = []
+            arglist = "[%s]\n" % ", ".join(["i%d" % i for i in range(numargs)])
+            ops.append(arglist)
+            
+            arg1 = 0
+            arg2 = 1
+            res = numargs
+            for i in range(numargs - 1):
+                op = "i%d = int_add(i%d, i%d)\n" % (res, arg1, arg2)
+                arg1 = res
+                res += 1
+                arg2 += 1
+                ops.append(op)
+            ops.append("finish(i%d)" % (res - 1))
+
+            ops = "".join(ops)
+            loop = parse(ops)
+            looptoken = JitCellToken()
+            done_number = self.cpu.get_fail_descr_number(loop.operations[-1].getdescr())
+            self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken)
+            ARGS = [lltype.Signed] * numargs
+            RES = lltype.Signed
+            args = [i+1 for i in range(numargs)]
+            res = self.cpu.execute_token(looptoken, *args)
+            assert self.cpu.get_latest_value_int(0) == sum(args)
+        


More information about the pypy-commit mailing list