[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