[pypy-commit] pypy test-58c3d8552833: fix optimization of getarrayitem_gc_pure/strgetitem/unicodegetitem
bdkearns
noreply at buildbot.pypy.org
Fri Feb 28 15:13:10 CET 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch: test-58c3d8552833
Changeset: r69548:9603b1f96636
Date: 2014-02-28 06:39 -0500
http://bitbucket.org/pypy/pypy/changeset/9603b1f96636/
Log: fix optimization of getarrayitem_gc_pure/strgetitem/unicodegetitem
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -628,13 +628,6 @@
def optimize_DEBUG_MERGE_POINT(self, op):
self.emit_operation(op)
- def optimize_GETARRAYITEM_GC_PURE(self, op):
- indexvalue = self.getvalue(op.getarg(1))
- if indexvalue.is_constant():
- arrayvalue = self.getvalue(op.getarg(0))
- arrayvalue.make_len_gt(MODE_ARRAY, op.getdescr(), indexvalue.box.getint())
- self.optimize_default(op)
-
def optimize_STRGETITEM(self, op):
indexvalue = self.getvalue(op.getarg(1))
if indexvalue.is_constant():
diff --git a/rpython/jit/metainterp/optimizeopt/pure.py b/rpython/jit/metainterp/optimizeopt/pure.py
--- a/rpython/jit/metainterp/optimizeopt/pure.py
+++ b/rpython/jit/metainterp/optimizeopt/pure.py
@@ -110,11 +110,6 @@
def produce_potential_short_preamble_ops(self, sb):
for op in self.emitted_pure_operations:
- if op.getopnum() == rop.GETARRAYITEM_GC_PURE or \
- op.getopnum() == rop.STRGETITEM or \
- op.getopnum() == rop.UNICODEGETITEM:
- if not self.getvalue(op.getarg(1)).is_constant():
- continue
sb.add_potential(op)
dispatch_opt = make_dispatcher_method(OptPure, 'optimize_',
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -6128,13 +6128,12 @@
i5 = int_add(i1, i3)
i4 = strgetitem(p1, i5)
escape(i4)
- jump(p1, i1, i2, i3, i5)
- """
- expected = """
- [p1, i1, i2, i3, i5]
- i4 = strgetitem(p1, i5)
+ jump(p1, i1, i2, i3, i4)
+ """
+ expected = """
+ [p1, i1, i2, i3, i4]
escape(i4)
- jump(p1, i1, i2, i3, i5)
+ jump(p1, i1, i2, i3, i4)
"""
self.optimize_strunicode_loop(ops, expected, preamble)
@@ -6195,7 +6194,6 @@
"""
expected = """
[p0, i0]
- i1 = strgetitem(p0, i0)
jump(p0, i0)
"""
self.optimize_loop(ops, expected)
@@ -6211,7 +6209,6 @@
"""
expected = """
[p0, i0]
- i1 = unicodegetitem(p0, i0)
jump(p0, i0)
"""
self.optimize_loop(ops, expected)
@@ -7183,7 +7180,12 @@
call(i843, descr=nonwritedescr)
jump(p9, i1)
"""
- self.optimize_loop(ops, ops)
+ expected = """
+ [p9, i1, i843]
+ call(i843, descr=nonwritedescr)
+ jump(p9, i1, i843)
+ """
+ self.optimize_loop(ops, expected)
def test_loopinvariant_unicodelen(self):
ops = """
@@ -7206,7 +7208,12 @@
call(i843, descr=nonwritedescr)
jump(p9, i1)
"""
- self.optimize_loop(ops, ops)
+ expected = """
+ [p9, i1, i843]
+ call(i843, descr=nonwritedescr)
+ jump(p9, i1, i843)
+ """
+ self.optimize_loop(ops, expected)
def test_loopinvariant_arraylen(self):
ops = """
@@ -7332,7 +7339,12 @@
call(i843, descr=nonwritedescr)
jump(p9, i1)
"""
- self.optimize_loop(ops, ops)
+ expected = """
+ [p9, i1, i843]
+ call(i843, descr=nonwritedescr)
+ jump(p9, i1, i843)
+ """
+ self.optimize_loop(ops, expected)
def test_loopinvariant_constant_getarrayitem_pure(self):
ops = """
More information about the pypy-commit
mailing list