[pypy-svn] r15819 - pypy/dist/pypy/rpython/memory
cfbolz at codespeak.net
cfbolz at codespeak.net
Tue Aug 9 16:26:17 CEST 2005
Author: cfbolz
Date: Tue Aug 9 16:26:17 2005
New Revision: 15819
Modified:
pypy/dist/pypy/rpython/memory/convertlltype.py
pypy/dist/pypy/rpython/memory/lltypesimulation.py
Log:
made structs of void work.
Modified: pypy/dist/pypy/rpython/memory/convertlltype.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/convertlltype.py (original)
+++ pypy/dist/pypy/rpython/memory/convertlltype.py Tue Aug 9 16:26:17 2005
@@ -18,7 +18,7 @@
def convert(self, val_or_ptr, inline_to_addr=None, from_parent=False):
TYPE = lltype.typeOf(val_or_ptr)
if isinstance(TYPE, lltype.Primitive):
- if inline_to_addr is not None:
+ if inline_to_addr is not None and TYPE != lltype.Void:
inline_to_addr._store(primitive_to_fmt[TYPE], val_or_ptr)
return val_or_ptr
elif isinstance(TYPE, lltype.Array):
Modified: pypy/dist/pypy/rpython/memory/lltypesimulation.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/lltypesimulation.py (original)
+++ pypy/dist/pypy/rpython/memory/lltypesimulation.py Tue Aug 9 16:26:17 2005
@@ -40,6 +40,8 @@
def get_fixed_size(TYPE):
if isinstance(TYPE, lltype.Primitive):
+ if TYPE == lltype.Void:
+ return 0
return struct.calcsize(primitive_to_fmt[TYPE])
elif isinstance(TYPE, lltype.Ptr):
return struct.calcsize("P")
@@ -130,6 +132,8 @@
T = self._T._flds[field_name]
base = self._layout[field_name]
if isinstance(T, lltype.Primitive):
+ if T == lltype.Void:
+ return None
res = (self._address + offset)._load(primitive_to_fmt[T])[0]
if T == lltype.Bool:
res = bool(res)
@@ -151,6 +155,8 @@
T = self._T._flds[field_name]
offset = self._layout[field_name]
if isinstance(T, lltype.Primitive):
+ if T == lltype.Void:
+ return
(self._address + offset)._store(primitive_to_fmt[T], value)
return
elif isinstance(T, lltype.Ptr):
More information about the Pypy-commit
mailing list