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

pedronis at codespeak.net pedronis at codespeak.net
Mon Jan 22 19:38:39 CET 2007


Author: pedronis
Date: Mon Jan 22 19:38:36 2007
New Revision: 37156

Modified:
   pypy/dist/pypy/rpython/rstr.py
   pypy/dist/pypy/rpython/test/test_rstr.py
   pypy/dist/pypy/rpython/test/tool.py
Log:
(arre, pedronis) don't emit folded string concatenation at rtyping time.



Modified: pypy/dist/pypy/rpython/rstr.py
==============================================================================
--- pypy/dist/pypy/rpython/rstr.py	(original)
+++ pypy/dist/pypy/rpython/rstr.py	Mon Jan 22 19:38:36 2007
@@ -291,6 +291,8 @@
 class __extend__(pairtype(AbstractStringRepr, AbstractStringRepr)):
     def rtype_add((r_str1, r_str2), hop):
         string_repr = hop.rtyper.type_system.rstr.string_repr
+        if hop.s_result.is_constant():
+            return hop.inputconst(string_repr, hop.s_result.const)
         v_str1, v_str2 = hop.inputargs(string_repr, string_repr)
         return hop.gendirectcall(r_str1.ll.ll_strconcat, v_str1, v_str2)
     rtype_inplace_add = rtype_add

Modified: pypy/dist/pypy/rpython/test/test_rstr.py
==============================================================================
--- pypy/dist/pypy/rpython/test/test_rstr.py	(original)
+++ pypy/dist/pypy/rpython/test/test_rstr.py	Mon Jan 22 19:38:36 2007
@@ -6,6 +6,7 @@
 from pypy.rpython.rtyper import RPythonTyper, TyperError
 from pypy.rpython.test.tool import BaseRtypingTest, LLRtypeMixin, OORtypeMixin
 from pypy.rpython.llinterp import LLException
+from pypy.objspace.flow.model import summary
 
 def test_parse_fmt():
     parse = AbstractLLHelpers.parse_fmt_string
@@ -708,6 +709,19 @@
         else:
             assert False
 
+    def test_fold_concat(self):
+        def g(tail):
+            return "head"+tail
+        def f():
+            return g("tail")
+        from pypy import conftest
+
+        t, typer, fgraph = self.gengraph(f, [], backendopt=True)
+        if conftest.option.view:
+            t.view()
+        assert summary(fgraph) == {}
+        
+
 def FIXME_test_str_to_pystringobj():
     def f(n):
         if n >= 0:

Modified: pypy/dist/pypy/rpython/test/tool.py
==============================================================================
--- pypy/dist/pypy/rpython/test/tool.py	(original)
+++ pypy/dist/pypy/rpython/test/tool.py	Mon Jan 22 19:38:36 2007
@@ -1,9 +1,15 @@
 import py
 from pypy.rpython.ootypesystem import ootype
 from pypy.rpython.lltypesystem import lltype
-from pypy.rpython.test.test_llinterp import interpret, interpret_raises
+from pypy.rpython.test.test_llinterp import gengraph, interpret, interpret_raises
 
 class BaseRtypingTest(object):
+
+    def gengraph(self, func, argtypes=[], viewbefore='auto', policy=None,
+             backendopt=False, config=None):
+        return gengraph(func, argtypes, viewbefore, policy, type_system=self.type_system,
+                        backendopt=backendopt, config=config)
+    
     def interpret(self, fn, args, **kwds):
         return interpret(fn, args, type_system=self.type_system, **kwds)
 



More information about the Pypy-commit mailing list