[pypy-svn] pypy move-rfloat: Merge default

amauryfa commits-noreply at bitbucket.org
Wed Mar 2 11:00:34 CET 2011


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: move-rfloat
Changeset: r42379:70eb63c3f970
Date: 2011-03-02 10:41 +0100
http://bitbucket.org/pypy/pypy/changeset/70eb63c3f970/

Log:	Merge default

diff --git a/pypy/translator/c/node.py b/pypy/translator/c/node.py
--- a/pypy/translator/c/node.py
+++ b/pypy/translator/c/node.py
@@ -337,12 +337,15 @@
         self.varlength = varlength
         self.dependencies = {}
         contained_type = ARRAY.OF
-        if ARRAY._hints.get("render_as_void"):
-            contained_type = Void
+        # There is no such thing as an array of voids:
+        # we use a an array of chars instead; only the pointer can be void*.
         self.itemtypename = db.gettype(contained_type, who_asks=self)
         self.fulltypename = self.itemtypename.replace('@', '(@)[%d]' %
                                                       (self.varlength,))
-        self.fullptrtypename = self.itemtypename.replace('@', '*@')
+        if ARRAY._hints.get("render_as_void"):
+            self.fullptrtypename = 'void *@'
+        else:
+            self.fullptrtypename = self.itemtypename.replace('@', '*@')
 
     def setup(self):
         """Array loops are forbidden by ForwardReference.become() because
@@ -363,7 +366,10 @@
         return self.itemindex_access_expr(baseexpr, index)
 
     def itemindex_access_expr(self, baseexpr, indexexpr):
-        return 'RPyBareItem(%s, %s)' % (baseexpr, indexexpr)
+        if self.ARRAY._hints.get("render_as_void"):
+            return 'RPyBareItem((char*)%s, %s)' % (baseexpr, indexexpr)
+        else:
+            return 'RPyBareItem(%s, %s)' % (baseexpr, indexexpr)
 
     def definition(self):
         return []    # no declaration is needed


More information about the Pypy-commit mailing list