[pypy-svn] r18398 - pypy/dist/pypy/translator/c

arigo at codespeak.net arigo at codespeak.net
Tue Oct 11 15:06:16 CEST 2005


Author: arigo
Date: Tue Oct 11 15:06:14 2005
New Revision: 18398

Modified:
   pypy/dist/pypy/translator/c/stackless.py
Log:
We don't need  .replace('@','')  explicitely; there is cdecl() for that.


Modified: pypy/dist/pypy/translator/c/stackless.py
==============================================================================
--- pypy/dist/pypy/translator/c/stackless.py	(original)
+++ pypy/dist/pypy/translator/c/stackless.py	Tue Oct 11 15:06:14 2005
@@ -8,6 +8,7 @@
 from pypy.objspace.flow.model import Variable
 from pypy.rpython import lltype
 from pypy.rpython.memory.lladdress import Address
+from pypy.translator.c.support import cdecl
 from pypy.translator.c.funcgen import FunctionCodeGenerator
 
 
@@ -106,9 +107,9 @@
             # XXX '0' is hopefully fine for a dummy value of any type
             #     for most compilers
             dummyargs = ['0'] * len(FUNC.ARGS)
-            callexpr = '((%s) fn) (%s);' % (
-                sg.database.gettype(lltype.Ptr(FUNC)).replace('@', ''),
-                ', '.join(dummyargs))
+            functiontype = sg.database.gettype(lltype.Ptr(FUNC))
+            callexpr = '((%s) fn) (%s);' % (cdecl(functiontype, ''),
+                                            ', '.join(dummyargs))
             globalretvalvartype = simplified_type(FUNC.RESULT)
             if globalretvalvartype is not None:
                 globalretvalvarname = RETVALVARS[globalretvalvartype]
@@ -230,9 +231,9 @@
         if retvar.concretetype is lltype.Void:
             savecall += ' return;'
         else:
-            savecall = 'return (%s) %s' % (
-                self.lltypename(retvar).replace('@', ''),
-                savecall)
+            retvartype = self.lltypename(retvar)
+            savecall = 'return (%s) %s' % (cdecl(retvartype, ''),
+                                           savecall)
         self.savelines.append('%s: %s' % (savelabel, savecall))
 
         # generate the resume block, e.g.
@@ -244,16 +245,16 @@
         lines = ['case %d:' % len(self.resumeblocks)]
         for v, fieldname in variables_to_restore:
             varname = self.expr(v)
-            vartype = self.lltypename(v).replace('@', '')
+            vartype = self.lltypename(v)
             lines.append('%s = (%s)(((struct %s*) f)->%s);' % (
-                varname, vartype, structname, fieldname))
+                varname, cdecl(vartype, ''), structname, fieldname))
         retvarname = self.expr(op.result)
-        retvartype = self.lltypename(op.result).replace('@', '')
+        retvartype = self.lltypename(op.result)
         retvarst = simplified_type(op.result.concretetype)
         if retvarst is not None:
             globalretvalvarname = RETVALVARS[retvarst]
             lines.append('%s = (%s) %s;' % (
-                retvarname, retvartype, globalretvalvarname))
+                retvarname, cdecl(retvartype, ''), globalretvalvarname))
         lines.append('goto %s;' % (resumelabel,))
         self.resumeblocks.append(lines)
 



More information about the Pypy-commit mailing list