[pypy-svn] r76911 - in pypy/branch/gc-module/pypy/module/gc: . test

arigo at codespeak.net arigo at codespeak.net
Tue Sep 7 11:39:13 CEST 2010


Author: arigo
Date: Tue Sep  7 11:39:12 2010
New Revision: 76911

Modified:
   pypy/branch/gc-module/pypy/module/gc/__init__.py
   pypy/branch/gc-module/pypy/module/gc/referents.py
   pypy/branch/gc-module/pypy/module/gc/test/test_referents.py
Log:
Expose get_rpy_type_index() to app-level.


Modified: pypy/branch/gc-module/pypy/module/gc/__init__.py
==============================================================================
--- pypy/branch/gc-module/pypy/module/gc/__init__.py	(original)
+++ pypy/branch/gc-module/pypy/module/gc/__init__.py	Tue Sep  7 11:39:12 2010
@@ -21,6 +21,7 @@
                 'get_rpy_roots': 'referents.get_rpy_roots',
                 'get_rpy_referents': 'referents.get_rpy_referents',
                 'get_rpy_memory_usage': 'referents.get_rpy_memory_usage',
+                'get_rpy_type_index': 'referents.get_rpy_type_index',
                 'get_objects': 'referents.get_objects',
                 'get_referents': 'referents.get_referents',
                 'GcRef': 'referents.W_GcRef',

Modified: pypy/branch/gc-module/pypy/module/gc/referents.py
==============================================================================
--- pypy/branch/gc-module/pypy/module/gc/referents.py	(original)
+++ pypy/branch/gc-module/pypy/module/gc/referents.py	Tue Sep  7 11:39:12 2010
@@ -50,6 +50,14 @@
     size = rgc.get_rpy_memory_usage(gcref)
     return space.wrap(size)
 
+def get_rpy_type_index(space, w_obj):
+    """Return an integer identifying the RPython type of the given
+    object or GcRef.  The number starts at 1; it is an index in the
+    file typeids.txt produced at translation."""
+    gcref = unwrap(space, w_obj)
+    index = rgc.get_rpy_type_index(gcref)
+    return space.wrap(index)
+
 def _list_w_obj_referents(gcref, result_w):
     # Get all W_Root reachable directly from gcref, and add them to
     # the list 'result_w'.  The logic here is not robust against gc

Modified: pypy/branch/gc-module/pypy/module/gc/test/test_referents.py
==============================================================================
--- pypy/branch/gc-module/pypy/module/gc/test/test_referents.py	(original)
+++ pypy/branch/gc-module/pypy/module/gc/test/test_referents.py	Tue Sep  7 11:39:12 2010
@@ -62,6 +62,20 @@
         print n
         assert 4 <= n <= 64
 
+    def test_get_rpy_type_index(self):
+        import gc
+        class Foo(object):
+            pass
+        n1 = gc.get_rpy_type_index(12345)
+        n2 = gc.get_rpy_type_index(23456)
+        n3 = gc.get_rpy_type_index(1.2)
+        n4 = gc.get_rpy_type_index(Foo())
+        print n1, n2, n3, n4
+        assert n1 == n2
+        assert n1 != n3
+        assert n1 != n4
+        assert n3 != n4
+
     def test_get_referents(self):
         import gc
         y = 12345



More information about the Pypy-commit mailing list