Author: Brian Kearns <[email protected]>
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():
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to