[pypy-svn] r62757 - pypy/trunk/pypy/translator/c/test

fijal at codespeak.net fijal at codespeak.net
Mon Mar 9 14:12:55 CET 2009


Author: fijal
Date: Mon Mar  9 14:12:52 2009
New Revision: 62757

Modified:
   pypy/trunk/pypy/translator/c/test/test_lladdresses.py
Log:
the same test for C (exploding!)


Modified: pypy/trunk/pypy/translator/c/test/test_lladdresses.py
==============================================================================
--- pypy/trunk/pypy/translator/c/test/test_lladdresses.py	(original)
+++ pypy/trunk/pypy/translator/c/test/test_lladdresses.py	Mon Mar  9 14:12:52 2009
@@ -173,3 +173,29 @@
     fn = compile(f, [int], gcpolicy='boehm')
     assert fn(3) == 123
     assert fn(-3) == -42
+
+def test_prebuilt_list_of_addresses():
+    TP = lltype.Struct('x', ('y', lltype.Signed))
+    a = lltype.malloc(TP, flavor='raw', immortal=True)
+    b = lltype.malloc(TP, flavor='raw', immortal=True)
+    c = lltype.malloc(TP, flavor='raw', immortal=True)
+    a_a = cast_ptr_to_adr(a)
+    a0 = cast_ptr_to_adr(a)
+    assert a_a is not a0
+    assert a_a == a0
+    a_b = cast_ptr_to_adr(b)
+    a_c = cast_ptr_to_adr(c)
+
+    d = {a_a: 3, a_b: 4, a_c: 5}
+    d[a0] = 8
+
+    def func(i):
+        if i == 0:
+            ptr = a
+        else:
+            ptr = b
+        return d[cast_ptr_to_adr(ptr)]
+
+    fn = compile(func, [int], gcpolicy='boehm')
+    assert fn(0) == 8
+    assert fn(1) == 4



More information about the Pypy-commit mailing list