[pypy-commit] pypy virtual-raw-store-load: optimize raw_load/raw_store like arrayitem_raw

bdkearns noreply at buildbot.pypy.org
Sun Mar 16 22:40:23 CET 2014


Author: Brian Kearns <bdkearns at gmail.com>
Branch: virtual-raw-store-load
Changeset: r69982:e165cc881e89
Date: 2014-03-16 14:03 -0700
http://bitbucket.org/pypy/pypy/changeset/e165cc881e89/

Log:	optimize raw_load/raw_store like arrayitem_raw

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
@@ -1894,6 +1894,23 @@
         """
         self.optimize_loop(ops, expected)
 
+    def test_virtual_raw_store_load(self):
+        ops = """
+        [i1]
+        i0 = call('malloc', 10, descr=raw_malloc_descr)
+        raw_store(i0, 0, i1, descr=rawarraydescr)
+        i2 = raw_load(i0, 0, descr=rawarraydescr)
+        i3 = int_add(i1, i2)
+        call('free', i0, descr=raw_free_descr)
+        jump(i3)
+        """
+        expected = """
+        [i1]
+        i2 = int_add(i1, i1)
+        jump(i2)
+        """
+        self.optimize_loop(ops, expected)
+
     def test_duplicate_getfield_1(self):
         ops = """
         [p1, p2]
diff --git a/rpython/jit/metainterp/optimizeopt/virtualize.py b/rpython/jit/metainterp/optimizeopt/virtualize.py
--- a/rpython/jit/metainterp/optimizeopt/virtualize.py
+++ b/rpython/jit/metainterp/optimizeopt/virtualize.py
@@ -788,6 +788,8 @@
         value.ensure_nonnull()
         self.emit_operation(op)
 
+    optimize_RAW_LOAD = optimize_GETARRAYITEM_RAW
+
     def optimize_SETARRAYITEM_RAW(self, op):
         value = self.getvalue(op.getarg(0))
         if value.is_virtual():
@@ -805,6 +807,8 @@
         value.ensure_nonnull()
         self.emit_operation(op)
 
+    optimize_RAW_STORE = optimize_SETARRAYITEM_RAW
+
     def optimize_GETINTERIORFIELD_GC(self, op):
         value = self.getvalue(op.getarg(0))
         if value.is_virtual():


More information about the pypy-commit mailing list