[pypy-svn] r65397 - pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp

fijal at codespeak.net fijal at codespeak.net
Mon May 25 02:15:49 CEST 2009


Author: fijal
Date: Mon May 25 02:15:44 2009
New Revision: 65397

Modified:
   pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py
Log:
oops, avoid consecutive stores


Modified: pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py
==============================================================================
--- pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py	(original)
+++ pypy/branch/pyjitpl5-experiments/pypy/jit/metainterp/optimize2.py	Mon May 25 02:15:44 2009
@@ -92,14 +92,14 @@
         # modification in place. Reason for this is explained in mirror
         # in optimize.py
         op.suboperations = []
-        for node, field in self.additional_stores:
+        for (node, field), fieldnode in self.additional_stores.iteritems():
             op.suboperations.append(ResOperation(rop.SETFIELD_GC,
                [node.source, node.cleanfields[field].source], None, field))
         op.suboperations.append(op_fail)
         op.args = self.new_arguments(op)
 
     def optimize_operations(self):
-        self.additional_stores = []
+        self.additional_stores = {}
         newoperations = []
         for op in self.loop.operations:
             newop = op
@@ -174,9 +174,10 @@
         field = op.descr
         if field not in instnode.vdesc.virtuals:
             return op
-        instnode.cleanfields[field] = spec.getnode(op.args[1])
+        node = spec.getnode(op.args[1])
+        instnode.cleanfields[field] = node
         # we never set it here
-        spec.additional_stores.append((instnode, field))
+        spec.additional_stores[instnode, field] = node
         return None
 
 specializer = Specializer([SimpleVirtualizableOpt(),



More information about the Pypy-commit mailing list