Author: Carl Friedrich Bolz <cfb...@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): _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit