[pypy-svn] r65765 - pypy/branch/pyjitpl5/pypy/jit/backend/x86
fijal at codespeak.net
fijal at codespeak.net
Sat Jun 13 23:26:33 CEST 2009
Author: fijal
Date: Sat Jun 13 23:26:33 2009
New Revision: 65765
Modified:
pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py
Log:
Don't store generated_mps as a dict, but instead store loop on a calldescr
Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/runner.py Sat Jun 13 23:26:33 2009
@@ -22,15 +22,9 @@
history.TreeLoop._x86_compiled = 0
-def const_descr_eq(a, b):
- return (a.v0 == b.v0 and
- a.v1 == b.v1 and
- a.flag2 == b.flag2)
-
-def const_descr_hash(a):
- return a.v0 + (a.v1 << 2) + int(a.flag2 << 4)
-
class ConstDescr3(AbstractDescr):
+ call_loop = None
+
def __init__(self, v0, v1, flag2):
self.v0 = v0
self.v1 = v1
@@ -101,7 +95,6 @@
self.lltype2vtable = rtyper.lltype_to_vtable_mapping()
self._setup_prebuilt_error('ovf', OverflowError)
self._setup_prebuilt_error('zer', ZeroDivisionError)
- self.generated_mps = r_dict(const_descr_eq, const_descr_hash)
self._descr_caches = {}
self.gc_ll_descr = get_ll_description(gcdescr, self)
self.vtable_offset, _ = symbolic.get_field_token(rclass.OBJECT,
@@ -256,10 +249,8 @@
return BoxInt(0)
def _get_loop_for_call(self, args, calldescr, ptr):
- try:
- return self.generated_mps[calldescr]
- except KeyError:
- pass
+ if calldescr.call_loop is not None:
+ return calldescr.call_loop
args = [arg.clonebox() for arg in args]
result = self._new_box(ptr)
operations = [
@@ -271,7 +262,7 @@
loop.inputargs = args
loop.operations = operations
self.compile_operations(loop)
- self.generated_mps[calldescr] = loop
+ calldescr.call_loop = loop
return loop
def execute_operations(self, loop, verbose=False):
More information about the Pypy-commit
mailing list