Author: Maciej Fijalkowski <[email protected]>
Branch: optresult-unroll
Changeset: r79492:6054a6f8a5eb
Date: 2015-09-07 09:20 +0200
http://bitbucket.org/pypy/pypy/changeset/6054a6f8a5eb/

Log:    a fix for a crash, but not ideal things emitted

diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py 
b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -4255,6 +4255,32 @@
         """
         self.optimize_strunicode_loop(ops, expected)
 
+    def test_str_concat_vstr2_str_2(self):
+        ops = """
+        [i0, i1, p2]
+        p1 = newstr(2)
+        strsetitem(p1, 0, i0)
+        strsetitem(p1, 1, i1)
+        escape_n(p1)
+        p3 = call_r(0, p1, p2, descr=strconcatdescr)
+        jump(i1, i0, p3)
+        """
+        expected = """
+        [i0, i1, p2]
+        p1 = newstr(2)
+        strsetitem(p1, 0, i0)
+        strsetitem(p1, 1, i1)
+        escape_n(p1)
+        i2 = strlen(p2)
+        i3 = int_add(2, i2)
+        p3 = newstr(i3)
+        strsetitem(p3, 0, i0)
+        strsetitem(p3, 1, i1)
+        copystrcontent(p2, p3, 0, 2, i2)
+        jump(i1, i0, p3)
+        """
+        self.optimize_strunicode_loop(ops, expected)
+
     def test_str_concat_str_vstr2(self):
         ops = """
         [i0, i1, p2]
diff --git a/rpython/jit/metainterp/optimizeopt/vstring.py 
b/rpython/jit/metainterp/optimizeopt/vstring.py
--- a/rpython/jit/metainterp/optimizeopt/vstring.py
+++ b/rpython/jit/metainterp/optimizeopt/vstring.py
@@ -187,11 +187,9 @@
 
     def string_copy_parts(self, op, string_optimizer, targetbox, offsetbox,
                           mode):
-        if not self.is_virtual():
-            # and not self.is_completely_initialized():
-            raise Exception("implement me")
-            return VAbstractStringValue.string_copy_parts(
-                self, string_optimizer, targetbox, offsetbox, mode)
+        if not self.is_virtual(): # and not self.is_completely_initialized():
+            return StrPtrInfo.string_copy_parts(self, op, string_optimizer,
+                                                targetbox, offsetbox, mode)
         else:
             return self.initialize_forced_string(op, string_optimizer,
                                                  targetbox, offsetbox, mode)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to