[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