[pypy-svn] r17050 - in pypy/dist/pypy/rpython/memory: . test
cfbolz at codespeak.net
cfbolz at codespeak.net
Mon Aug 29 19:43:00 CEST 2005
Author: cfbolz
Date: Mon Aug 29 19:42:59 2005
New Revision: 17050
Modified:
pypy/dist/pypy/rpython/memory/lltypesimulation.py
pypy/dist/pypy/rpython/memory/test/test_lltypesimulation.py
Log:
ouch. structs that contain addressed didn't work with the
lltypesimulation. test + fix. slightly unclean.
Modified: pypy/dist/pypy/rpython/memory/lltypesimulation.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/lltypesimulation.py (original)
+++ pypy/dist/pypy/rpython/memory/lltypesimulation.py Mon Aug 29 19:42:59 2005
@@ -15,6 +15,8 @@
return simulatorptr(lltype.Ptr(T), address)
elif T == lltype.Bool:
return bool(address._load(primitive_to_fmt[T])[0])
+ elif T == lladdress.Address:
+ return (self._address + offset).address[0]
elif isinstance(T, lltype.Primitive):
return address._load(primitive_to_fmt[T])[0]
elif isinstance(T, lltype.Ptr):
@@ -61,6 +63,8 @@
if isinstance(T, lltype.Primitive):
if T == lltype.Void:
return None
+ elif T == lladdress.Address:
+ return (self._address + offset).address[0]
res = (self._address + offset)._load(primitive_to_fmt[T])[0]
if T == lltype.Bool:
res = bool(res)
@@ -84,7 +88,11 @@
if isinstance(T, lltype.Primitive):
if T == lltype.Void:
return
- (self._address + offset)._store(primitive_to_fmt[T], value)
+ if T == lladdress.Address:
+ (self._address + offset).address[0] = value
+ else:
+ (self._address + offset)._store(primitive_to_fmt[T],
+ value)
return
elif isinstance(T, lltype.Ptr):
assert value._TYPE == T
@@ -178,7 +186,7 @@
return simulatorptr(PTRTYPE, ptr._address)
# for now use the simulators raw_malloc
-def malloc(T, n=None, immortal=False):
+def malloc(T, n=None, immortal=False, flavor='gc'):
fixedsize = get_fixed_size(T)
varsize = get_variable_size(T)
if n is None:
Modified: pypy/dist/pypy/rpython/memory/test/test_lltypesimulation.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/test/test_lltypesimulation.py (original)
+++ pypy/dist/pypy/rpython/memory/test/test_lltypesimulation.py Mon Aug 29 19:42:59 2005
@@ -325,3 +325,8 @@
assert s0.a == s0.a
assert not s0.a != s0.a
+def test_struct_with_address():
+ S = lltype.GcStruct("s", ('a', lladdress.Address))
+ s = malloc(S)
+ s.a = lladdress.NULL
+ assert s.a == lladdress.NULL
More information about the Pypy-commit
mailing list