[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