[pypy-svn] r21016 - in pypy/dist/pypy/translator/c: . test

cfbolz at codespeak.net cfbolz at codespeak.net
Sun Dec 11 01:20:23 CET 2005


Author: cfbolz
Date: Sun Dec 11 01:20:22 2005
New Revision: 21016

Modified:
   pypy/dist/pypy/translator/c/funcgen.py
   pypy/dist/pypy/translator/c/test/test_backendoptimized.py
Log:
final step: support the new operation in genc


Modified: pypy/dist/pypy/translator/c/funcgen.py
==============================================================================
--- pypy/dist/pypy/translator/c/funcgen.py	(original)
+++ pypy/dist/pypy/translator/c/funcgen.py	Sun Dec 11 01:20:22 2005
@@ -545,6 +545,12 @@
             result.append(self.pyobj_incref(op.result))
         return '\t'.join(result)
 
+    def OP_CAST_INT_TO_PTR(self, op, err):
+        TYPE = self.lltypemap(op.result)
+        typename = self.db.gettype(TYPE)
+        return "%s = (%s)%s;" % (self.expr(op.result), cdecl(typename, ""), 
+                                 self.expr(op.args[0]))
+
     def OP_SAME_AS(self, op, err):
         result = []
         TYPE = self.lltypemap(op.result)

Modified: pypy/dist/pypy/translator/c/test/test_backendoptimized.py
==============================================================================
--- pypy/dist/pypy/translator/c/test/test_backendoptimized.py	(original)
+++ pypy/dist/pypy/translator/c/test/test_backendoptimized.py	Sun Dec 11 01:20:22 2005
@@ -1,6 +1,7 @@
 import autopath
 from pypy.translator.c.test.test_typed import TestTypedTestCase as _TestTypedTestCase
 from pypy.translator.backendopt.all import backend_optimizations
+from pypy.rpython import objectmodel
 
 
 class TestTypedOptimizedTestCase(_TestTypedTestCase):
@@ -75,4 +76,22 @@
         fn = self.getcompiled(f)
         res = fn()
         assert res == 42
-        
+
+    def test_casttoandfromint(self):
+        class A(object):
+            pass
+        def f():
+            a = A()
+            return objectmodel.cast_object_to_int(a)
+        def g():
+            a = A()
+            i = objectmodel.cast_object_to_int(a)
+            return objectmodel.cast_object_to_int(
+                objectmodel.cast_int_to_object(i, A)) == i
+        fn = self.getcompiled(f)
+        res = fn()
+        assert res > 0
+        gn = self.getcompiled(g)
+        res = gn()
+        assert res
+    



More information about the Pypy-commit mailing list