Author: Brian Kearns <[email protected]>
Branch: 
Changeset: r69567:8dfe1848a8da
Date: 2014-02-28 20:10 -0500
http://bitbucket.org/pypy/pypy/changeset/8dfe1848a8da/

Log:    merge getarrayitem_gc_pure opt fix

diff --git a/pypy/module/pypyjit/test_pypy_c/test_call.py 
b/pypy/module/pypyjit/test_pypy_c/test_call.py
--- a/pypy/module/pypyjit/test_pypy_c/test_call.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_call.py
@@ -194,7 +194,6 @@
         assert log.result == 1000
         loop, = log.loops_by_id('call')
         assert loop.match_by_id('call', """
-            p14 = getarrayitem_gc_pure(p8, i9, descr=<ArrayP .>)
             i14 = force_token()
             i16 = force_token()
         """)
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 = """
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to