[pypy-svn] r14748 - in pypy/dist/pypy/rpython: . test

pedronis at codespeak.net pedronis at codespeak.net
Mon Jul 18 21:05:55 CEST 2005


Author: pedronis
Date: Mon Jul 18 21:05:53 2005
New Revision: 14748

Modified:
   pypy/dist/pypy/rpython/rbuiltin.py
   pypy/dist/pypy/rpython/test/test_rbuiltin.py
Log:
direct support for isinstance calls statically computed  by the annotator



Modified: pypy/dist/pypy/rpython/rbuiltin.py
==============================================================================
--- pypy/dist/pypy/rpython/rbuiltin.py	(original)
+++ pypy/dist/pypy/rpython/rbuiltin.py	Mon Jul 18 21:05:53 2005
@@ -113,6 +113,8 @@
     return hop.args_r[0].rtype_bltn_list(hop)
 
 def rtype_builtin_isinstance(hop):
+    if hop.s_result.is_constant():
+        return hop.inputconst(lltype.Bool, hop.s_result.const)
     if hop.args_r[0] == pyobj_repr or hop.args_r[1] == pyobj_repr:
         v_obj, v_typ = hop.inputargs(pyobj_repr, pyobj_repr)
         c = hop.inputconst(pyobj_repr, isinstance)

Modified: pypy/dist/pypy/rpython/test/test_rbuiltin.py
==============================================================================
--- pypy/dist/pypy/rpython/test/test_rbuiltin.py	(original)
+++ pypy/dist/pypy/rpython/test/test_rbuiltin.py	Mon Jul 18 21:05:53 2005
@@ -169,5 +169,13 @@
     _1_0 = lltype.pyobjectptr(1.0)
     res = interpret(f, [_1_0], someobjects=True)
     assert res is False
-    
-    
+
+
+def test_const_isinstance():
+    class B(object):
+        pass
+    def f():
+        b = B()
+        return isinstance(b, B)
+    res = interpret(f, [])
+    assert res is True



More information about the Pypy-commit mailing list