[pypy-svn] r53484 - in pypy/dist/pypy: rpython/lltypesystem rpython/lltypesystem/test translator/c/test
cfbolz at codespeak.net
cfbolz at codespeak.net
Sun Apr 6 22:36:10 CEST 2008
Author: cfbolz
Date: Sun Apr 6 22:36:08 2008
New Revision: 53484
Modified:
pypy/dist/pypy/rpython/lltypesystem/llmemory.py
pypy/dist/pypy/rpython/lltypesystem/test/test_llmemory.py
pypy/dist/pypy/translator/c/test/test_lladdresses.py
Log:
support for address.float[x]
Modified: pypy/dist/pypy/rpython/lltypesystem/llmemory.py
==============================================================================
--- pypy/dist/pypy/rpython/lltypesystem/llmemory.py (original)
+++ pypy/dist/pypy/rpython/lltypesystem/llmemory.py Sun Apr 6 22:36:08 2008
@@ -491,6 +491,9 @@
class _signed_fakeaccessor(_fakeaccessor):
TYPE = lltype.Signed
+class _float_fakeaccessor(_fakeaccessor):
+ TYPE = lltype.Float
+
class _char_fakeaccessor(_fakeaccessor):
TYPE = lltype.Char
@@ -520,9 +523,11 @@
"unsigned": lltype.Unsigned,
"char": lltype.Char,
"address": Address,
+ "float": lltype.Float,
}
fakeaddress.signed = property(_signed_fakeaccessor)
+fakeaddress.float = property(_float_fakeaccessor)
fakeaddress.char = property(_char_fakeaccessor)
fakeaddress.address = property(_address_fakeaccessor)
fakeaddress._TYPE = Address
Modified: pypy/dist/pypy/rpython/lltypesystem/test/test_llmemory.py
==============================================================================
--- pypy/dist/pypy/rpython/lltypesystem/test/test_llmemory.py (original)
+++ pypy/dist/pypy/rpython/lltypesystem/test/test_llmemory.py Sun Apr 6 22:36:08 2008
@@ -15,6 +15,18 @@
b.signed[0] = 234
assert s.x == 234
+def test_simple_float():
+ S = lltype.GcStruct("S", ("x", lltype.Float), ("y", lltype.Float))
+ s = lltype.malloc(S)
+ s.x = 123.2
+ s.y = 456.2
+ a = fakeaddress(s)
+ assert a.ref() == s
+ b = a + FieldOffset(S, 'x')
+ assert b.float[0] == 123.2
+ b.float[0] = 234.1
+ assert s.x == 234.1
+
def test_composite():
S1 = lltype.GcStruct("S1", ("x", lltype.Signed), ("y", lltype.Signed))
S2 = lltype.GcStruct("S2", ("s", S1))
Modified: pypy/dist/pypy/translator/c/test/test_lladdresses.py
==============================================================================
--- pypy/dist/pypy/translator/c/test/test_lladdresses.py (original)
+++ pypy/dist/pypy/translator/c/test/test_lladdresses.py Sun Apr 6 22:36:08 2008
@@ -33,6 +33,24 @@
res = fc(1)
assert res == 1
+def test_memory_float():
+ S = lltype.GcStruct("S", ("x", lltype.Float), ("y", lltype.Float))
+ offset = FieldOffset(S, 'x')
+ offsety = FieldOffset(S, 'y')
+ def f(value):
+ s = lltype.malloc(S)
+ s.x = 123.2
+ a = cast_ptr_to_adr(s)
+ b = a + offset
+ assert b.float[0] == 123.2
+ b.float[0] = 234.1
+ (a + offsety).float[0] = value
+ assert s.x == 234.1
+ return s.x + value
+ fc = compile(f, [float])
+ res = fc(42.42)
+ assert res == f(42.42)
+
def test_pointer_arithmetic():
def f(offset, char):
addr = raw_malloc(10000)
More information about the Pypy-commit
mailing list