[pypy-commit] pypy optresult-unroll: test and fix
fijal
noreply at buildbot.pypy.org
Mon Sep 7 11:10:48 CEST 2015
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: optresult-unroll
Changeset: r79496:f0f6f371d27b
Date: 2015-09-07 11:10 +0200
http://bitbucket.org/pypy/pypy/changeset/f0f6f371d27b/
Log: test and fix
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
@@ -4237,7 +4237,7 @@
def test_str_concat_2(self):
ops = """
[p1, p2]
- p3 = call_r(0, "fo", p1, descr=strconcatdescr)
+ p3 = call_r(0, s"fo", p1, descr=strconcatdescr)
escape_n(p3)
i5 = strgetitem(p3, 0)
escape_n(i5)
@@ -4246,12 +4246,14 @@
expected = """
[p1, p2]
i1 = strlen(p1)
- i2 = strlen(p2)
- i3 = int_add(i1, i2)
- p3 = newstr(i3)
- copystrcontent(p1, p3, 0, 0, i1)
- copystrcontent(p2, p3, 0, i1, i2)
- jump(p2, p3)
+ i0 = int_add(2, i1)
+ p5 = newstr(i0)
+ strsetitem(p5, 0, 102)
+ strsetitem(p5, 1, 111)
+ copystrcontent(p1, p5, 0, 2, i1)
+ escape_n(p5)
+ escape_n(102)
+ jump(p2, p5)
"""
self.optimize_strunicode_loop(ops, expected)
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
@@ -393,10 +393,13 @@
if isinstance(strbox, ConstPtr) and isinstance(indexbox, ConstInt):
if mode is mode_string:
s = strbox.getref(lltype.Ptr(rstr.STR))
- return ConstInt(ord(s.chars[indexbox.getint()]))
+ resnewbox = ConstInt(ord(s.chars[indexbox.getint()]))
else:
s = strbox.getref(lltype.Ptr(rstr.UNICODE))
- return ConstInt(ord(s.chars[indexbox.getint()]))
+ resnewbox = ConstInt(ord(s.chars[indexbox.getint()]))
+ if resbox is not None:
+ string_optimizer.make_equal_to(resbox, resnewbox)
+ return resnewbox
if resbox is None:
resbox = ResOperation(mode.STRGETITEM, [strbox, indexbox])
else:
More information about the pypy-commit
mailing list