[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