[pypy-commit] pypy default: add reverse operations for cast from and to int pointer
cfbolz
noreply at buildbot.pypy.org
Tue Oct 18 14:02:16 CEST 2011
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch:
Changeset: r48195:98e1c25e7b93
Date: 2011-10-18 10:01 +0200
http://bitbucket.org/pypy/pypy/changeset/98e1c25e7b93/
Log: add reverse operations for cast from and to int pointer
diff --git a/pypy/jit/metainterp/optimizeopt/rewrite.py b/pypy/jit/metainterp/optimizeopt/rewrite.py
--- a/pypy/jit/metainterp/optimizeopt/rewrite.py
+++ b/pypy/jit/metainterp/optimizeopt/rewrite.py
@@ -460,6 +460,14 @@
self.optimizer.opaque_pointers[value] = True
self.make_equal_to(op.result, value)
+ def optimize_CAST_PTR_TO_INT(self, op):
+ self.pure(rop.CAST_INT_TO_PTR, [op.result], op.getarg(0))
+ self.emit_operation(op)
+
+ def optimize_CAST_INT_TO_PTR(self, op):
+ self.pure(rop.CAST_PTR_TO_INT, [op.result], op.getarg(0))
+ self.emit_operation(op)
+
dispatch_opt = make_dispatcher_method(OptRewrite, 'optimize_',
default=OptRewrite.emit_operation)
optimize_guards = _findall(OptRewrite, 'optimize_', 'GUARD')
diff --git a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -236,6 +236,30 @@
""" % expected_value
self.optimize_loop(ops, expected)
+ def test_reverse_of_cast(self):
+ ops = """
+ [i0]
+ p0 = cast_int_to_ptr(i0)
+ i1 = cast_ptr_to_int(p0)
+ jump(i1)
+ """
+ expected = """
+ [i0]
+ jump(i0)
+ """
+ self.optimize_loop(ops, expected)
+ ops = """
+ [p0]
+ i1 = cast_ptr_to_int(p0)
+ p1 = cast_int_to_ptr(i1)
+ jump(p1)
+ """
+ expected = """
+ [p0]
+ jump(p0)
+ """
+ self.optimize_loop(ops, expected)
+
# ----------
def test_remove_guard_class_1(self):
More information about the pypy-commit
mailing list