[pypy-svn] r74547 - in pypy/branch/blackhole-improvement/pypy/jit: backend backend/llgraph codewriter

arigo at codespeak.net arigo at codespeak.net
Tue May 18 18:53:10 CEST 2010


Author: arigo
Date: Tue May 18 18:53:09 2010
New Revision: 74547

Modified:
   pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py
   pypy/branch/blackhole-improvement/pypy/jit/backend/model.py
   pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py
Log:
Minor fixes.


Modified: pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/backend/llgraph/runner.py	Tue May 18 18:53:09 2010
@@ -21,17 +21,13 @@
     pass
 
 
-NO_VTABLE = lltype.nullptr(rclass.CLASSTYPE.TO)
-
 class Descr(history.AbstractDescr):
 
-    def __init__(self, ofs, typeinfo, extrainfo=None, name=None,
-                 vtable=NO_VTABLE):
+    def __init__(self, ofs, typeinfo, extrainfo=None, name=None):
         self.ofs = ofs
         self.typeinfo = typeinfo
         self.extrainfo = extrainfo
         self.name = name
-        self.vtable = vtable
 
     def get_return_type(self):
         return self.typeinfo
@@ -102,13 +98,12 @@
         assert self.translate_support_code
         return False
 
-    def getdescr(self, ofs, typeinfo='?', extrainfo=None, name=None,
-                 vtable=NO_VTABLE):
-        key = (ofs, typeinfo, extrainfo, name, vtable._obj)
+    def getdescr(self, ofs, typeinfo='?', extrainfo=None, name=None):
+        key = (ofs, typeinfo, extrainfo, name)
         try:
             return self._descrs[key]
         except KeyError:
-            descr = Descr(ofs, typeinfo, extrainfo, name, vtable)
+            descr = Descr(ofs, typeinfo, extrainfo, name)
             self._descrs[key] = descr
             return descr
 
@@ -262,12 +257,9 @@
 
     # ----------
 
-    def sizeof(self, S, vtable=None):
+    def sizeof(self, S):
         assert not isinstance(S, lltype.Ptr)
-        if vtable is None:
-            return self.getdescr(symbolic.get_size(S))
-        else:
-            return self.getdescr(symbolic.get_size(S), vtable=vtable)
+        return self.getdescr(symbolic.get_size(S))
 
 
 class LLtypeCPU(BaseCPU):

Modified: pypy/branch/blackhole-improvement/pypy/jit/backend/model.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/backend/model.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/backend/model.py	Tue May 18 18:53:09 2010
@@ -121,7 +121,7 @@
         raise NotImplementedError
 
     @staticmethod
-    def sizeof(S, vtable=None):
+    def sizeof(S):
         raise NotImplementedError
 
     @staticmethod

Modified: pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py	Tue May 18 18:53:09 2010
@@ -33,9 +33,17 @@
         if block.operations == ():
             return
         renamings = {}
+        renamings_constants = {}    # subset of 'renamings', {Var:Const} only
         newoperations = []
         #
+        def do_rename(var, var_or_const):
+            renamings[var] = var_or_const
+            if isinstance(var_or_const, Constant):
+                renamings_constants[var] = var_or_const
+        #
         for op in block.operations:
+            if renamings_constants:
+                op = self._do_renaming(renamings_constants, op)
             oplist = self.rewrite_operation(op)
             #
             count_before_last_operation = len(newoperations)
@@ -48,10 +56,10 @@
                     # rewrite_operation() returns None to mean "has no real
                     # effect, the result should just be renamed to args[0]"
                     if op.result is not None:
-                        renamings[op.result] = renamings.get(op.args[0],
-                                                             op.args[0])
+                        do_rename(op.result, renamings.get(op.args[0],
+                                                           op.args[0]))
                 elif isinstance(op1, Constant):
-                    renamings[op.result] = op1
+                    do_rename(op.result, op1)
                 else:
                     raise TypeError(repr(op1))
         #



More information about the Pypy-commit mailing list