[pypy-svn] r15851 - pypy/dist/pypy/rpython/memory

cfbolz at codespeak.net cfbolz at codespeak.net
Tue Aug 9 18:42:17 CEST 2005


Author: cfbolz
Date: Tue Aug  9 18:42:12 2005
New Revision: 15851

Modified:
   pypy/dist/pypy/rpython/memory/convertlltype.py
   pypy/dist/pypy/rpython/memory/lltypesimulation.py
Log:
don't convert UnboundMethods.
make function ptrs 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 18:42:12 2005
@@ -12,6 +12,9 @@
 
 import types, struct
 
+FUNCTIONTYPES = (types.FunctionType, types.UnboundMethodType,
+                 types.BuiltinFunctionType)
+
 class LLTypeConverter(object):
     def __init__(self, address):
         self.converted = {}
@@ -149,7 +152,7 @@
                 continue
             elif isinstance(cand, lltype.LowLevelType):
                 continue
-            elif isinstance(cand, types.FunctionType):
+            elif isinstance(cand, FUNCTIONTYPES):
                 continue
             elif isinstance(cand, str):
                 continue
@@ -194,7 +197,7 @@
                 self.constants[constant] = constant.value
             elif isinstance(constant.value, str):
                 self.constants[constant] = constant.value
-            elif isinstance(constant.value, types.FunctionType):
+            elif isinstance(constant.value, FUNCTIONTYPES):
                 self.constants[constant] = constant.value
             else:
                 self.constants[constant] = self.cvter.convert(constant.value)

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 18:42:12 2005
@@ -98,6 +98,8 @@
         return simulatorptr(T, address.address[0])
     elif isinstance(T, lltype.PyObjectType):
         return simulatorptr(lltype.Ptr(T), address)
+    elif isinstance(T, lltype.FuncType):
+        return simulatorptr(lltype.Ptr(T), address)
     else:
         assert 0, "not implemented yet"
 



More information about the Pypy-commit mailing list