Author: Maciej Fijalkowski <[email protected]>
Branch: rewrite-unrolling
Changeset: r75291:84ee4dbb2783
Date: 2015-01-10 21:25 +0100
http://bitbucket.org/pypy/pypy/changeset/84ee4dbb2783/

Log:    (arigo, fijal) progress pure opts

diff --git a/rpython/jit/metainterp/optimizeopt/__init__.py 
b/rpython/jit/metainterp/optimizeopt/__init__.py
--- a/rpython/jit/metainterp/optimizeopt/__init__.py
+++ b/rpython/jit/metainterp/optimizeopt/__init__.py
@@ -48,8 +48,7 @@
     return optimizations, unroll
 
 def optimize_trace(metainterp_sd, jitdriver_sd, loop, enable_opts,
-                   inline_short_preamble=True, start_state=None,
-                   export_state=True):
+                   inline_short_preamble=True, unroller=None):
     """Optimize loop.operations to remove internal overheadish operations.
     """
 
@@ -61,8 +60,7 @@
         if unroll:
             return optimize_unroll(metainterp_sd, jitdriver_sd, loop,
                                    optimizations,
-                                   inline_short_preamble, start_state,
-                                   export_state)
+                                   inline_short_preamble, unroller)
         else:
             optimizer = Optimizer(metainterp_sd, jitdriver_sd, loop,
                                   optimizations)
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_unroll.py 
b/rpython/jit/metainterp/optimizeopt/test/test_unroll.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_unroll.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_unroll.py
@@ -1,19 +1,25 @@
 
 from rpython.jit.tool.oparser import parse
 from rpython.jit.metainterp.optimizeopt import optimize_trace
+from rpython.jit.metainterp.optimizeopt.optimizer import Optimizer
+from rpython.jit.metainterp.optimizeopt.unroll import Unroller
 from rpython.jit.metainterp.optimizeopt.test.test_util import BaseTest,\
      FakeMetaInterpStaticData
+from rpython.jit.metainterp.optimizeopt.pure import OptPure
+from rpython.jit.metainterp.resoperation import rop
+from rpython.jit.metainterp.history import ConstInt, BoxInt
 from rpython.jit.backend.llgraph import runner
 
 class TestUnrollDirect(BaseTest):
     cpu = runner.LLGraphCPU(None)
     enable_opts = 
"intbounds:rewrite:virtualize:string:earlyforce:pure:heap:unroll"
+    metainterp_sd = FakeMetaInterpStaticData(cpu)
 
-    def optimize(self, loop, expected=None, export_state=False, 
start_state=None):
-        metainterp_sd = FakeMetaInterpStaticData(self.cpu)
-        loop = parse(loop)
-        state = optimize_trace(metainterp_sd, None, loop, self.enable_opts,
-                               export_state=export_state, 
start_state=start_state)
+    def optimize(self, loop, expected=None, unroller=None):
+        if isinstance(loop, str):
+            loop = parse(loop)
+        state = optimize_trace(self.metainterp_sd, None, loop, 
self.enable_opts,
+                               unroller=unroller)
         if expected is not None:
             expected = parse(expected)
             self.assert_equal(loop, expected)
@@ -26,12 +32,34 @@
         i1 = int_add(i0, 1)
         label(i1)
         """
-        exported_state = self.optimize(preamble, export_state=True)
+        unroller = self.optimize(preamble)
         loop = """
         [i0]
         label(i0)
         i1 = int_add(i0, 1)
         jump(i1)
         """
-        self.optimize(loop, loop, start_state=exported_state)
+        self.optimize(loop, loop, unroller=unroller)
         
+    def test_pure_opts(self):
+        loop = parse("""
+        [i0]
+        label(i0)
+        i1 = int_add(i0, 1)
+        escape(i1)
+        jump(i0)
+        """)
+        pure = OptPure()
+        i0 = loop.operations[1].getarg(0)
+        i1 = BoxInt()
+        unroller = Unroller()
+        unroller.optimizer = Optimizer(self.metainterp_sd, None, None, [pure])
+        pure.optimizer = unroller.optimizer
+        pure.pure(rop.INT_ADD, [i0, ConstInt(1)], i1)
+        expected = """
+        [i0, i1]
+        label(i0, i1)
+        escape(i1)
+        jump(i0, i1)
+        """
+        self.optimize(loop, expected, unroller=unroller)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to