Author: Ronan Lamy <[email protected]>
Branch: optimizeopt-cleanup
Changeset: r96585:2853f7476ba2
Date: 2019-05-09 15:38 +0100
http://bitbucket.org/pypy/pypy/changeset/2853f7476ba2/

Log:    Make optimize_trace() a method of CompileData

diff --git a/rpython/jit/metainterp/compile.py 
b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -39,6 +39,26 @@
         for arg in self.trace.inputargs:
             arg.set_forwarded(None)
 
+    def optimize_trace(self, metainterp_sd, jitdriver_sd, memo):
+        """Optimize loop.operations to remove internal overheadish operations.
+        """
+        from rpython.jit.metainterp.optimizeopt import build_opt_chain
+        # mark that a new trace has been started
+        log = metainterp_sd.jitlog.log_trace(jl.MARK_TRACE, metainterp_sd, 
None)
+        log.write_trace(self.trace)
+        if self.log_noopt:
+            metainterp_sd.logger_noopt.log_loop_from_trace(self.trace, 
memo=memo)
+
+        self.box_names_memo = memo
+        optimizations = build_opt_chain(self.enable_opts)
+        debug_start("jit-optimize")
+        try:
+            return self.optimize(metainterp_sd, jitdriver_sd, optimizations)
+        finally:
+            self.forget_optimization_info()
+            debug_stop("jit-optimize")
+
+
 class PreambleCompileData(CompileData):
     """
     This is the case of label() ops label()
@@ -54,10 +74,9 @@
     def optimize(self, metainterp_sd, jitdriver_sd, optimizations):
         from rpython.jit.metainterp.optimizeopt.unroll import UnrollOptimizer
         opt = UnrollOptimizer(metainterp_sd, jitdriver_sd, optimizations)
-        return opt.optimize_preamble(self.trace,
-                                        self.runtime_boxes,
-                                        self.call_pure_results,
-                                        self.box_names_memo)
+        return opt.optimize_preamble(
+            self.trace, self.runtime_boxes, self.call_pure_results,
+            self.box_names_memo)
 
 class SimpleCompileData(CompileData):
     """ This represents label() ops jump with no extra info associated with
@@ -72,7 +91,8 @@
 
     def optimize(self, metainterp_sd, jitdriver_sd, optimizations):
         from rpython.jit.metainterp.optimizeopt.optimizer import Optimizer
-        from rpython.jit.metainterp.optimizeopt.bridgeopt import 
deserialize_optimizer_knowledge
+        from rpython.jit.metainterp.optimizeopt.bridgeopt \
+            import deserialize_optimizer_knowledge
         opt = Optimizer(metainterp_sd, jitdriver_sd, optimizations)
         traceiter = self.trace.get_iter()
         if self.resumestorage:
@@ -86,8 +106,9 @@
     """ This represents ops() with a jump at the end that goes to some
     loop, we need to deal with virtual state and inlining of short preamble
     """
-    def __init__(self, trace, runtime_boxes, resumestorage=None, 
call_pure_results=None,
-                 enable_opts=None, inline_short_preamble=False):
+    def __init__(self, trace, runtime_boxes, resumestorage=None,
+                 call_pure_results=None, enable_opts=None,
+                 inline_short_preamble=False):
         self.trace = trace
         self.runtime_boxes = runtime_boxes
         self.call_pure_results = call_pure_results
@@ -203,8 +224,6 @@
 
 def compile_simple_loop(metainterp, greenkey, trace, runtime_args, enable_opts,
                         cut_at):
-    from rpython.jit.metainterp.optimizeopt import optimize_trace
-
     jitdriver_sd = metainterp.jitdriver_sd
     metainterp_sd = metainterp.staticdata
     jitcell_token = make_jitcell_token(jitdriver_sd)
@@ -212,8 +231,8 @@
     data = SimpleCompileData(trace, call_pure_results=call_pure_results,
                              enable_opts=enable_opts)
     try:
-        loop_info, ops = optimize_trace(
-            metainterp_sd, jitdriver_sd, data, metainterp.box_names_memo)
+        loop_info, ops = data.optimize_trace(
+            metainterp_sd, jitdriver_sd, metainterp.box_names_memo)
     except InvalidLoop:
         metainterp_sd.jitlog.trace_aborted()
         trace.cut_at(cut_at)
@@ -242,8 +261,6 @@
     """Try to compile a new procedure by closing the current history back
     to the first operation.
     """
-    from rpython.jit.metainterp.optimizeopt import optimize_trace
-
     metainterp_sd = metainterp.staticdata
     jitdriver_sd = metainterp.jitdriver_sd
     history = metainterp.history
@@ -267,9 +284,8 @@
                                     call_pure_results=call_pure_results,
                                     enable_opts=enable_opts)
     try:
-        start_state, preamble_ops = optimize_trace(
-            metainterp_sd, jitdriver_sd, preamble_data,
-            metainterp.box_names_memo)
+        start_state, preamble_ops = preamble_data.optimize_trace(
+            metainterp_sd, jitdriver_sd, metainterp.box_names_memo)
     except InvalidLoop:
         metainterp_sd.jitlog.trace_aborted()
         history.cut(cut_at)
@@ -284,8 +300,8 @@
                                  call_pure_results=call_pure_results,
                                  enable_opts=enable_opts)
     try:
-        loop_info, loop_ops = optimize_trace(
-            metainterp_sd, jitdriver_sd, loop_data, metainterp.box_names_memo)
+        loop_info, loop_ops = loop_data.optimize_trace(
+            metainterp_sd, jitdriver_sd, metainterp.box_names_memo)
     except InvalidLoop:
         metainterp_sd.jitlog.trace_aborted()
         history.cut(cut_at)
@@ -332,8 +348,6 @@
     """Try to compile a new procedure by closing the current history back
     to the first operation.
     """
-    from rpython.jit.metainterp.optimizeopt import optimize_trace
-
     trace = metainterp.history.trace.cut_trace_from(start, inputargs)
     metainterp_sd = metainterp.staticdata
     jitdriver_sd = metainterp.jitdriver_sd
@@ -353,8 +367,8 @@
                                  call_pure_results=call_pure_results,
                                  enable_opts=enable_opts)
     try:
-        loop_info, loop_ops = optimize_trace(
-            metainterp_sd, jitdriver_sd, loop_data, metainterp.box_names_memo)
+        loop_info, loop_ops = loop_data.optimize_trace(
+            metainterp_sd, jitdriver_sd, metainterp.box_names_memo)
     except InvalidLoop:
         # Fall back on jumping directly to preamble
         history.cut(cut)
@@ -364,9 +378,8 @@
                                      enable_opts=enable_opts,
                                      inline_short_preamble=False)
         try:
-            loop_info, loop_ops = optimize_trace(
-                metainterp_sd, jitdriver_sd, loop_data,
-                metainterp.box_names_memo)
+            loop_info, loop_ops = loop_data.optimize_trace(
+                metainterp_sd, jitdriver_sd, metainterp.box_names_memo)
         except InvalidLoop:
             metainterp_sd.jitlog.trace_aborted()
             history.cut(cut)
@@ -1024,8 +1037,6 @@
     """Try to compile a new bridge leading from the beginning of the history
     to some existing place.
     """
-    from rpython.jit.metainterp.optimizeopt import optimize_trace
-
     # The history contains new operations to attach as the code for the
     # failure of 'resumekey.guard_op'.
     #
@@ -1060,8 +1071,8 @@
                                  call_pure_results=call_pure_results,
                                  enable_opts=enable_opts)
     try:
-        info, newops = optimize_trace(
-            metainterp_sd, jitdriver_sd, data, metainterp.box_names_memo)
+        info, newops = data.optimize_trace(
+            metainterp_sd, jitdriver_sd, metainterp.box_names_memo)
     except InvalidLoop:
         metainterp_sd.jitlog.trace_aborted()
         # XXX I am fairly convinced that optimize_bridge cannot actually raise
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
@@ -1,4 +1,3 @@
-from rpython.jit.metainterp.optimizeopt.optimizer import Optimizer
 from rpython.jit.metainterp.optimizeopt.rewrite import OptRewrite
 from rpython.jit.metainterp.optimizeopt.intbounds import OptIntBounds
 from rpython.jit.metainterp.optimizeopt.virtualize import OptVirtualize
@@ -7,10 +6,8 @@
 from rpython.jit.metainterp.optimizeopt.simplify import OptSimplify
 from rpython.jit.metainterp.optimizeopt.pure import OptPure
 from rpython.jit.metainterp.optimizeopt.earlyforce import OptEarlyForce
-from rpython.rlib.rjitlog import rjitlog as jl
 from rpython.rlib.jit import PARAMETERS, ENABLE_ALL_OPTS
 from rpython.rlib.unroll import unrolling_iterable
-from rpython.rlib.debug import debug_start, debug_stop, debug_print
 
 
 ALL_OPTS = [('intbounds', OptIntBounds),
@@ -43,29 +40,5 @@
         optimizations.append(OptSimplify())
     return optimizations
 
-def _log_loop_from_trace(metainterp_sd, trace, memo=None, is_unrolled=False):
-    # mark that a new trace has been started
-    log = metainterp_sd.jitlog.log_trace(jl.MARK_TRACE, metainterp_sd, None)
-    log.write_trace(trace)
-    if not is_unrolled:
-        metainterp_sd.logger_noopt.log_loop_from_trace(trace, memo=memo)
-
-def optimize_trace(metainterp_sd, jitdriver_sd, compile_data, memo=None):
-    """Optimize loop.operations to remove internal overheadish operations.
-    """
-    if memo is None:
-        memo = {}
-    debug_start("jit-optimize")
-    try:
-        _log_loop_from_trace(metainterp_sd, compile_data.trace, memo,
-                             is_unrolled=not compile_data.log_noopt)
-        compile_data.box_names_memo = memo
-        optimizations = build_opt_chain(compile_data.enable_opts)
-        return compile_data.optimize(
-            metainterp_sd, jitdriver_sd, optimizations)
-    finally:
-        compile_data.forget_optimization_info()
-        debug_stop("jit-optimize")
-
 if __name__ == '__main__':
     print ALL_OPTS_NAMES
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_util.py 
b/rpython/jit/metainterp/optimizeopt/test/test_util.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_util.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_util.py
@@ -23,7 +23,6 @@
 from rpython.jit.metainterp.resoperation import (
     rop, ResOperation, InputArgRef, AbstractValue)
 from rpython.jit.metainterp.virtualref import VirtualRefInfo
-from rpython.jit.metainterp.optimizeopt import optimize_trace
 from rpython.jit.metainterp.optimizeopt.util import (
     sort_descrs, equaloplists, args_dict)
 
@@ -544,7 +543,7 @@
         compute_bitstrings(self.cpu.fetch_all_descrs())
         #
         compile_data.enable_opts = self.enable_opts
-        state = optimize_trace(metainterp_sd, None, compile_data)
+        state = compile_data.optimize_trace(metainterp_sd, None, {})
         return state
 
     def _convert_call_pure_results(self, d):
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py 
b/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
@@ -853,7 +853,6 @@
     enable_opts = 
"intbounds:rewrite:virtualize:string:pure:earlyforce:heap:unroll"
 
     def _do_optimize_bridge(self, bridge, call_pure_results, values):
-        from rpython.jit.metainterp.optimizeopt import optimize_trace
         from rpython.jit.metainterp.optimizeopt.util import args_dict
 
         self.bridge = bridge
@@ -871,7 +870,7 @@
         data = compile.BridgeCompileData(trace, runtime_boxes,
             enable_opts=self.enable_opts, inline_short_preamble=True)
 
-        info, newops = optimize_trace(metainterp_sd, None, data)
+        info, newops = data.optimize_trace(metainterp_sd, None, {})
         if info.final():
             bridge.operations = newops
             bridge.inputargs = info.inputargs
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to