[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