[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