[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