[pypy-svn] pypy default: Fix test_descr and test_random.

arigo commits-noreply at bitbucket.org
Sun Feb 13 10:29:56 CET 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r41867:628ebe44e1f1
Date: 2011-02-13 10:29 +0100
http://bitbucket.org/pypy/pypy/changeset/628ebe44e1f1/

Log:	Fix test_descr and test_random.

diff --git a/pypy/jit/backend/llsupport/test/test_descr.py b/pypy/jit/backend/llsupport/test/test_descr.py
--- a/pypy/jit/backend/llsupport/test/test_descr.py
+++ b/pypy/jit/backend/llsupport/test/test_descr.py
@@ -5,6 +5,7 @@
 from pypy.rpython.annlowlevel import llhelper
 from pypy.jit.metainterp.history import BoxInt, BoxFloat, BoxPtr
 from pypy.jit.metainterp import history
+from pypy.jit.codewriter import longlong
 import sys, struct, py
 
 def test_get_size_descr():
@@ -248,7 +249,7 @@
     #
     descr6 = get_call_descr(c0, [lltype.Signed], lltype.SignedLongLong)
     assert descr6.get_result_size(False) == 8
-    assert descr6.get_return_type() == history.FLOAT
+    assert descr6.get_return_type() == "L"
     assert descr6.arg_classes == "i"
 
 def test_get_call_descr_translated():
@@ -351,5 +352,5 @@
     opaquea = lltype.cast_opaque_ptr(llmemory.GCREF, a)
     a[0] = 1
     res = descr2.call_stub(rffi.cast(lltype.Signed, fnptr),
-                           [], [opaquea], [3.5])
-    assert res == 4.5
+                           [], [opaquea], [longlong.getfloatstorage(3.5)])
+    assert longlong.getrealfloat(res) == 4.5

diff --git a/pypy/jit/backend/test/test_random.py b/pypy/jit/backend/test/test_random.py
--- a/pypy/jit/backend/test/test_random.py
+++ b/pypy/jit/backend/test/test_random.py
@@ -9,6 +9,7 @@
 from pypy.jit.metainterp.resoperation import ResOperation, rop
 from pypy.jit.metainterp.executor import execute_nonspec
 from pypy.jit.metainterp.resoperation import opname
+from pypy.jit.codewriter import longlong
 
 class PleaseRewriteMe(Exception):
     pass
@@ -100,7 +101,8 @@
 ##                        'ConstAddr(llmemory.cast_ptr_to_adr(%s_vtable), cpu)'
 ##                        % name)
             elif isinstance(v, ConstFloat):
-                args.append('ConstFloat(%r)' % v.value)
+                args.append('ConstFloat(longlong.getfloatstorage(%r))'
+                            % v.getfloat())
             elif isinstance(v, ConstInt):
                 args.append('ConstInt(%s)' % v.value)
             else:
@@ -182,8 +184,8 @@
         if hasattr(self.loop, 'inputargs'):
             for i, v in enumerate(self.loop.inputargs):
                 if isinstance(v, (BoxFloat, ConstFloat)):
-                    print >>s, '    cpu.set_future_value_float(%d, %r)' % (i,
-                                                                       v.value)
+                    print >>s, ('    cpu.set_future_value_float(%d,'
+                        'longlong.getfloatstorage(%r))' % (i, v.getfloat()))
                 else:
                     print >>s, '    cpu.set_future_value_int(%d, %d)' % (i,
                                                                        v.value)
@@ -194,8 +196,8 @@
             fail_args = self.should_fail_by.getfailargs()
         for i, v in enumerate(fail_args):
             if isinstance(v, (BoxFloat, ConstFloat)):
-                print >>s, ('    assert cpu.get_latest_value_float(%d) == %r'
-                            % (i, v.value))
+                print >>s, ('    assert longlong.getrealfloat('
+                    'cpu.get_latest_value_float(%d)) == %r' % (i, v.value))
             else:
                 print >>s, ('    assert cpu.get_latest_value_int(%d) == %d'
                             % (i, v.value))
@@ -244,7 +246,7 @@
         elif r.random() < 0.75 or not builder.cpu.supports_floats:
             self.put(builder, [ConstInt(r.random_integer())])
         else:
-            self.put(builder, [ConstFloat(r.random_float())])
+            self.put(builder, [ConstFloat(r.random_float_storage())])
 
 class BinaryOperation(AbstractOperation):
     def __init__(self, opnum, and_mask=-1, or_mask=0, boolres=False):
@@ -302,16 +304,16 @@
             raise CannotProduceOperation
         k = r.random()
         if k < 0.18:
-            v_first = ConstFloat(r.random_float())
+            v_first = ConstFloat(r.random_float_storage())
         else:
             v_first = r.choice(builder.floatvars)
         if k > 0.82:
-            v_second = ConstFloat(r.random_float())
+            v_second = ConstFloat(r.random_float_storage())
         else:
             v_second = r.choice(builder.floatvars)
-        if abs(v_first.value) > 1E100 or abs(v_second.value) > 1E100:
+        if abs(v_first.getfloat()) > 1E100 or abs(v_second.getfloat()) > 1E100:
             raise CannotProduceOperation     # avoid infinities
-        if abs(v_second.value) < 1E-100:
+        if abs(v_second.getfloat()) < 1E-100:
             raise CannotProduceOperation     # e.g. division by zero error
         self.put(builder, [v_first, v_second])
 
@@ -330,7 +332,7 @@
         if not builder.floatvars:
             raise CannotProduceOperation
         box = r.choice(builder.floatvars)
-        if not (-sys.maxint-1 <= box.value <= sys.maxint):
+        if not (-sys.maxint-1 <= box.getfloat() <= sys.maxint):
             raise CannotProduceOperation      # would give an overflow
         self.put(builder, [box])
 
@@ -480,9 +482,13 @@
         if k < 1.0:
             x += k
         return x
+    def get_random_float_storage():
+        x = get_random_float()
+        return longlong.getfloatstorage(x)
     r.random_integer = get_random_integer
     r.random_char = get_random_char
     r.random_float = get_random_float
+    r.random_float_storage = get_random_float_storage
     return r
 
 def get_cpu():
@@ -516,7 +522,7 @@
                 at_least_once = 0
             for i in range(demo_conftest.option.n_vars):
                 if r.random() < k and i != at_least_once:
-                    startvars.append(BoxFloat(r.random_float()))
+                    startvars.append(BoxFloat(r.random_float_storage()))
                 else:
                     startvars.append(BoxInt(r.random_integer()))
         assert len(dict.fromkeys(startvars)) == len(startvars)


More information about the Pypy-commit mailing list