[pypy-svn] r64586 - in pypy/branch/pyjitpl5-simplify/pypy/jit: backend/llgraph metainterp

antocuni at codespeak.net antocuni at codespeak.net
Thu Apr 23 11:04:59 CEST 2009


Author: antocuni
Date: Thu Apr 23 11:04:59 2009
New Revision: 64586

Modified:
   pypy/branch/pyjitpl5-simplify/pypy/jit/backend/llgraph/runner.py
   pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py
Log:
use optimize.py also for ootype.  We need a half-hack to get numeric keys from
FieldDescr, but the rest seems to work just fine



Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/backend/llgraph/runner.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/backend/llgraph/runner.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/backend/llgraph/runner.py	Thu Apr 23 11:04:59 2009
@@ -489,6 +489,23 @@
 boxresult._annspecialcase_ = 'specialize:arg(0)'
 
 
+class KeyManager(object):
+    """
+    Helper class to convert arbitrary dictionary keys to integers.
+    """    
+
+    def __init__(self):
+        self.keys = {}
+
+    def getkey(self, key):
+        try:
+            return self.keys[key]
+        except KeyError:
+            n = len(self.keys)
+            self.keys[key] = n
+            return n
+
+
 class OODescr(history.AbstractDescr):
     pass
 
@@ -536,6 +553,7 @@
 class FieldDescr(OODescr):
 
     getfield = None
+    _keys = KeyManager()
 
     def __init__(self, TYPE, fieldname):
         self.TYPE = TYPE
@@ -553,6 +571,11 @@
             
         self.getfield = getfield
         self.setfield = setfield
+
+    def sort_key(self):
+        return self._keys.getkey((self.TYPE, self.fieldname))
+
+
 # ____________________________________________________________
 
 import pypy.jit.metainterp.executor

Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py	Thu Apr 23 11:04:59 2009
@@ -819,11 +819,7 @@
             self.optimize_loop = optimizer.optimize_loop
             self.optimize_bridge = optimizer.optimize_bridge
         else:
-            # hack hack hack
-            if self.cpu.is_oo:
-                from pypy.jit.metainterp import simple_optimize as optimize
-            else:
-                from pypy.jit.metainterp import optimize
+            from pypy.jit.metainterp import optimize
             self.optimize_loop = optimize.optimize_loop
             self.optimize_bridge = optimize.optimize_bridge
 



More information about the Pypy-commit mailing list