[pypy-svn] r63513 - pypy/branch/optimize-refactoring/pypy/jit/metainterp
fijal at codespeak.net
fijal at codespeak.net
Thu Apr 2 04:08:48 CEST 2009
Author: fijal
Date: Thu Apr 2 04:08:46 2009
New Revision: 63513
Modified:
pypy/branch/optimize-refactoring/pypy/jit/metainterp/compile.py
pypy/branch/optimize-refactoring/pypy/jit/metainterp/pyjitpl.py
pypy/branch/optimize-refactoring/pypy/jit/metainterp/warmspot.py
Log:
make optimize a bit more flexible, by allowing custom optimize to be posted
into metainterp
Modified: pypy/branch/optimize-refactoring/pypy/jit/metainterp/compile.py
==============================================================================
--- pypy/branch/optimize-refactoring/pypy/jit/metainterp/compile.py (original)
+++ pypy/branch/optimize-refactoring/pypy/jit/metainterp/compile.py Thu Apr 2 04:08:46 2009
@@ -6,8 +6,6 @@
from pypy.jit.metainterp.resoperation import ResOperation, rop
from pypy.jit.metainterp.history import TreeLoop, log, Box, History
-from pypy.jit.metainterp import optimize
-
def compile_new_loop(metainterp, old_loops, greenkey):
"""Try to compile a new loop by closing the current history back
@@ -92,8 +90,8 @@
loop.inputargs = history.inputargs
loop.operations = history.operations
loop.operations[-1].jump_target = loop
- old_loop = optimize.optimize_loop(metainterp.options, old_loops,
- loop, metainterp.cpu)
+ old_loop = metainterp.optimize_loop(metainterp.options, old_loops,
+ loop, metainterp.cpu)
if old_loop is not None:
return old_loop
history.source_link = loop
@@ -138,8 +136,8 @@
# it does not work -- i.e. none of the existing old_loops match.
temploop = create_empty_loop(metainterp)
temploop.operations = metainterp.history.operations
- target_loop = optimize.optimize_bridge(metainterp.options, old_loops,
- temploop, metainterp.cpu)
+ target_loop = metainterp.optimize_bridge(metainterp.options, old_loops,
+ temploop, metainterp.cpu)
# Did it work?
if target_loop is not None:
# Yes, we managed to create just a bridge. Attach the new operations
Modified: pypy/branch/optimize-refactoring/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/optimize-refactoring/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/optimize-refactoring/pypy/jit/metainterp/pyjitpl.py Thu Apr 2 04:08:46 2009
@@ -13,7 +13,7 @@
from pypy.jit.metainterp.resoperation import rop
from pypy.jit.metainterp.heaptracker import (get_vtable_for_gcstruct,
populate_type_cache)
-from pypy.jit.metainterp import codewriter, optimize, executor
+from pypy.jit.metainterp import codewriter, executor
from pypy.rlib.rarithmetic import intmask
from pypy.rlib.objectmodel import specialize
@@ -705,11 +705,14 @@
# ____________________________________________________________
+class Optimizer(object):
+ pass
class OOMetaInterp(object):
num_green_args = 0
- def __init__(self, portal_graph, graphs, cpu, stats, options):
+ def __init__(self, portal_graph, graphs, cpu, stats, options,
+ optimizer=None):
self.portal_graph = portal_graph
self.cpu = cpu
self.stats = stats
@@ -727,6 +730,13 @@
self.cpu.class_sizes = None
self._virtualizabledescs = {}
self._debug_history = []
+ if optimizer is not None:
+ self.optimize_loop = optimizer.optimize_loop
+ self.optimize_bridge = optimizer.optimize_bridge
+ else:
+ from pypy.jit.metainterp import optimize
+ self.optimize_loop = optimize.optimize_loop
+ self.optimize_bridge = optimize.optimize_bridge
def _recompute_class_sizes(self):
if self.cpu.class_sizes is None:
Modified: pypy/branch/optimize-refactoring/pypy/jit/metainterp/warmspot.py
==============================================================================
--- pypy/branch/optimize-refactoring/pypy/jit/metainterp/warmspot.py (original)
+++ pypy/branch/optimize-refactoring/pypy/jit/metainterp/warmspot.py Thu Apr 2 04:08:46 2009
@@ -113,7 +113,8 @@
return True
def build_meta_interp(self, CPUClass=runner.CPU, view="auto",
- translate_support_code=False, **kwds):
+ translate_support_code=False, optimizer=None,
+ **kwds):
opt = Options(**kwds)
self.stats = history.Stats()
if translate_support_code:
@@ -139,7 +140,8 @@
self.translator.graphs.append(graph)
self.portal_graph = graph
self.jitdriver = block.operations[pos].args[1].value
- self.metainterp = OOMetaInterp(graph, graphs, cpu, self.stats, opt)
+ self.metainterp = OOMetaInterp(graph, graphs, cpu, self.stats, opt,
+ optimizer=optimizer)
def make_enter_function(self):
WarmEnterState = make_state_class(self)
More information about the Pypy-commit
mailing list