[pypy-svn] r65918 - in pypy/branch/pyjitpl5/pypy: jit/metainterp jit/metainterp/test module/pypyjit module/pypyjit/test rlib
antocuni at codespeak.net
antocuni at codespeak.net
Wed Jun 24 17:12:54 CEST 2009
Author: antocuni
Date: Wed Jun 24 17:12:54 2009
New Revision: 65918
Modified:
pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize2.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize3.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize4.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/warmspot.py
pypy/branch/pyjitpl5/pypy/module/pypyjit/__init__.py
pypy/branch/pyjitpl5/pypy/module/pypyjit/interp_jit.py
pypy/branch/pyjitpl5/pypy/module/pypyjit/test/test_jit_setup.py
pypy/branch/pyjitpl5/pypy/rlib/jit.py
Log:
add a way to get the optimize*.py used from the compiled pypy
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize.py Wed Jun 24 17:12:54 2009
@@ -235,6 +235,9 @@
return old_loop
return None # no loop matches
+def get_optimizer_name():
+ return __file__
+
class PerfectSpecializer(object):
_allow_automatic_node_creation = False
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize2.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize2.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize2.py Wed Jun 24 17:12:54 2009
@@ -318,5 +318,7 @@
optimize_loop = staticmethod(optimize_loop)
optimize_bridge = staticmethod(optimize_bridge)
-
+ @staticmethod
+ def get_optimizer_name():
+ return __file__
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize3.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize3.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize3.py Wed Jun 24 17:12:54 2009
@@ -629,4 +629,6 @@
optimize_loop = staticmethod(optimize_loop)
optimize_bridge = staticmethod(optimize_bridge)
-
+ @staticmethod
+ def get_optimizer_name():
+ return __file__
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize4.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize4.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/optimize4.py Wed Jun 24 17:12:54 2009
@@ -127,6 +127,9 @@
return old_loop
return None # no loop matches
+ def get_optimizer_name():
+ return __file__
+
class PerfectSpecializer(object):
_allow_automatic_node_creation = False
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/pyjitpl.py Wed Jun 24 17:12:54 2009
@@ -902,10 +902,12 @@
if optimizer is not None:
self.optimize_loop = optimizer.optimize_loop
self.optimize_bridge = optimizer.optimize_bridge
+ self.get_optimizer_name = optimizer.get_optimizer_name
else:
from pypy.jit.metainterp import optimize
self.optimize_loop = optimize.optimize_loop
self.optimize_bridge = optimize.optimize_bridge
+ self.get_optimizer_name = optimize.get_optimizer_name
if self.cpu.is_oo:
self.ts = typesystem.oohelper
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_basic.py Wed Jun 24 17:12:54 2009
@@ -729,6 +729,19 @@
self.meta_interp(f, [40, 0])
+ def test_optimizer_name(self):
+ myjitdriver = JitDriver(greens = [], reds = ['x', 'y', 'res'])
+ def f(x, y):
+ res = 0
+ while y > 0:
+ myjitdriver.can_enter_jit(x=x, y=y, res=res)
+ myjitdriver.jit_merge_point(x=x, y=y, res=res)
+ res += x
+ y -= 1
+ return res
+ res = self.meta_interp(f, [6, 7])
+ assert myjitdriver.optimizer_name.startswith('optimize')
+
class TestOOtype(BasicTests, OOJitMixin):
def test_oohash(self):
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/warmspot.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/warmspot.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/warmspot.py Wed Jun 24 17:12:54 2009
@@ -129,6 +129,7 @@
policy = JitPolicy()
self.set_translator(translator)
self.build_meta_interp(**kwds)
+ self.set_optimizer_name()
self.make_args_specification()
self.rewrite_jit_merge_point()
if self.jitdriver.virtualizables:
@@ -192,6 +193,14 @@
profile=profile,
warmrunnerdesc=self)
+
+ def set_optimizer_name(self):
+ import os.path
+ filename = self.metainterp_sd.get_optimizer_name()
+ _, filename = os.path.split(filename)
+ name, _ = os.path.splitext(filename)
+ self.jitdriver.optimizer_name = name
+
def make_enter_function(self):
WarmEnterState = make_state_class(self)
state = WarmEnterState()
Modified: pypy/branch/pyjitpl5/pypy/module/pypyjit/__init__.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/module/pypyjit/__init__.py (original)
+++ pypy/branch/pyjitpl5/pypy/module/pypyjit/__init__.py Wed Jun 24 17:12:54 2009
@@ -6,6 +6,7 @@
interpleveldefs = {
'set_param': 'interp_jit.set_param',
+ 'get_optimizer_name': 'interp_jit.get_optimizer_name',
}
def setup_after_space_initialization(self):
Modified: pypy/branch/pyjitpl5/pypy/module/pypyjit/interp_jit.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/module/pypyjit/interp_jit.py (original)
+++ pypy/branch/pyjitpl5/pypy/module/pypyjit/interp_jit.py Wed Jun 24 17:12:54 2009
@@ -100,3 +100,8 @@
space.wrap("no JIT parameter '%s'" % (key,)))
set_param.unwrap_spec = [ObjSpace, Arguments]
+
+
+def get_optimizer_name(space):
+ return space.wrap(pypyjitdriver.optimizer_name)
+get_optimizer_name.unwrap_spec = [ObjSpace]
Modified: pypy/branch/pyjitpl5/pypy/module/pypyjit/test/test_jit_setup.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/module/pypyjit/test/test_jit_setup.py (original)
+++ pypy/branch/pyjitpl5/pypy/module/pypyjit/test/test_jit_setup.py Wed Jun 24 17:12:54 2009
@@ -24,3 +24,7 @@
i += 1
assert list(gen(3)) == [0, 1, 4]
+
+ def test_get_optimizer_name(self):
+ import pypyjit
+ assert pypyjit.get_optimizer_name() == '<undefined>'
Modified: pypy/branch/pyjitpl5/pypy/rlib/jit.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/rlib/jit.py (original)
+++ pypy/branch/pyjitpl5/pypy/rlib/jit.py Wed Jun 24 17:12:54 2009
@@ -92,6 +92,7 @@
"""
virtualizables = []
+ optimizer_name = '<undefined>'
def __init__(self, greens=None, reds=None, virtualizables=None):
if greens is not None:
More information about the Pypy-commit
mailing list