[pypy-svn] r53481 - pypy/branch/jit-hotpath/pypy/jit/codegen/test

fijal at codespeak.net fijal at codespeak.net
Sun Apr 6 21:40:23 CEST 2008


Author: fijal
Date: Sun Apr  6 21:40:20 2008
New Revision: 53481

Modified:
   pypy/branch/jit-hotpath/pypy/jit/codegen/test/rgenop_tests.py
Log:
A test pointing out that there is something wrong with genop_call for floats.


Modified: pypy/branch/jit-hotpath/pypy/jit/codegen/test/rgenop_tests.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/codegen/test/rgenop_tests.py	(original)
+++ pypy/branch/jit-hotpath/pypy/jit/codegen/test/rgenop_tests.py	Sun Apr  6 21:40:20 2008
@@ -736,6 +736,7 @@
                                           lltype.Void))
         def __init__(self, RGenOp):
             def writer(base, value):
+                print value
                 if value > 5:
                     RGenOp.write_frame_place(TP, base,
                                              self.place1, value * 7)
@@ -800,6 +801,22 @@
         return res
     return write_frame_place_runner
 
+def make_float_caller(rgenop):
+    FUNC = lltype.FuncType([lltype.Signed, lltype.Float], lltype.Float)
+    sigtoken = rgenop.sigToken(FLOATFUNC)
+    innertoken = rgenop.sigToken(FUNC)
+    builder, gv_f, [gv_y, gv_x] = rgenop.newgraph(innertoken, "inner")
+    builder.start_writing()
+    builder.finish_and_return(innertoken, gv_x)
+    builder.end()
+    builder, gv_f2, [gv_x] = rgenop.newgraph(sigtoken, "outer")
+    builder.start_writing()
+    gv_res = builder.genop_call(innertoken, gv_f, [rgenop.genconst(3), gv_x])
+    builder.finish_and_return(sigtoken, gv_res)
+    builder.end()
+
+    return gv_f2
+
 class ManyFramePlaceWriter:
     FUNC = lltype.Ptr(lltype.FuncType([llmemory.Address, lltype.Signed],
                                       lltype.Void))
@@ -1157,6 +1174,12 @@
         res = fnptr(1.2)
         assert res == 4.4
 
+    def test_float_call(self):
+        rgenop = self.RGenOp()
+        gv_f = make_float_caller(rgenop)
+        fnptr = self.cast_float(gv_f, 1)
+        assert fnptr(1.2) == 1.2
+
     def test_float_loop_direct(self):
         def f(x, y):
             i = 0
@@ -1624,9 +1647,9 @@
                                              FramePlaceWriterFloat)
         fnptr = self.cast_float(gv_callable, 1)
         res = fnptr(3.3)
-        assert res == -33.3 - 33.
+        assert res == (-33.3 - 3.3*10)
         res = fnptr(6.3)
-        assert res == -18.9    
+        assert res == -18.9
 
     def test_write_lots_of_frame_places_direct(self):
         def get_writer(places):



More information about the Pypy-commit mailing list