Author: Alex Gaynor <[email protected]>
Branch:
Changeset: r68598:64423a7bf04d
Date: 2014-01-11 12:27 -0800
http://bitbucket.org/pypy/pypy/changeset/64423a7bf04d/
Log: Unroll copying a long string from a constant to a plain virtual
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
@@ -5031,6 +5031,19 @@
"""
self.optimize_strunicode_loop(ops, expected)
+ def test_copy_long_string_to_virtual(self):
+ ops = """
+ []
+ p0 = newstr(20)
+ copystrcontent(s"aaaaaaaaaaaaaaaaaaaa", p0, 0, 0, 20)
+ jump(p0)
+ """
+ expected = """
+ []
+ jump(s"aaaaaaaaaaaaaaaaaaaa")
+ """
+ self.optimize_strunicode_loop(ops, expected)
+
def test_ptr_eq_str_constant(self):
ops = """
[]
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
@@ -520,7 +520,7 @@
elif ((src.is_virtual() or src.is_constant()) and
srcstart.is_constant() and dststart.is_constant() and
length.is_constant() and
- (length.force_box(self).getint() < 20 or (src.is_virtual() and
dst_virtual))):
+ (length.force_box(self).getint() < 20 or ((src.is_virtual() or
src.is_constant()) and dst_virtual))):
src_start = srcstart.force_box(self).getint()
dst_start = dststart.force_box(self).getint()
actual_length = length.force_box(self).getint()
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit