[pypy-commit] pypy var-in-Some: replace unsimplify.copyvar() with Variable.copy()

rlamy noreply at buildbot.pypy.org
Mon Oct 6 05:12:04 CEST 2014


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: var-in-Some
Changeset: r73819:831df4bed8a4
Date: 2014-10-06 01:57 +0100
http://bitbucket.org/pypy/pypy/changeset/831df4bed8a4/

Log:	replace unsimplify.copyvar() with Variable.copy()

diff --git a/rpython/flowspace/model.py b/rpython/flowspace/model.py
--- a/rpython/flowspace/model.py
+++ b/rpython/flowspace/model.py
@@ -312,6 +312,15 @@
     def foldable(self):
         return False
 
+    def copy(self):
+        """Make a copy of the Variable, preserving annotations and concretetype."""
+        newvar = Variable(self)
+        newvar.annotation = self.annotation
+        if hasattr(self, 'concretetype'):
+            newvar.concretetype = self.concretetype
+        return newvar
+
+
 
 class Constant(Hashable):
     __slots__ = ["concretetype"]
diff --git a/rpython/memory/gctransform/asmgcroot.py b/rpython/memory/gctransform/asmgcroot.py
--- a/rpython/memory/gctransform/asmgcroot.py
+++ b/rpython/memory/gctransform/asmgcroot.py
@@ -10,7 +10,7 @@
      BaseFrameworkGCTransformer, BaseRootWalker)
 from rpython.rtyper.llannotation import SomeAddress
 from rpython.rtyper.rbuiltin import gen_cast
-from rpython.translator.unsimplify import copyvar, varoftype
+from rpython.translator.unsimplify import varoftype
 from rpython.translator.tool.cbuild import ExternalCompilationInfo
 import sys
 
@@ -140,7 +140,7 @@
         block1 = Block([])
         reloadedvars = []
         for v, c_p in zip(block2.inputargs, sra):
-            v = copyvar(None, v)
+            v = v.copy()
             if isinstance(v.concretetype, lltype.Ptr):
                 w = varoftype(llmemory.Address)
             else:
diff --git a/rpython/translator/backendopt/inline.py b/rpython/translator/backendopt/inline.py
--- a/rpython/translator/backendopt/inline.py
+++ b/rpython/translator/backendopt/inline.py
@@ -8,7 +8,7 @@
 from rpython.translator.backendopt.canraise import RaiseAnalyzer
 from rpython.translator.backendopt.support import log, find_loop_blocks
 from rpython.translator.simplify import join_blocks, cleanup_graph, get_graph
-from rpython.translator.unsimplify import copyvar, split_block
+from rpython.translator.unsimplify import split_block
 
 
 class CannotInline(Exception):
@@ -236,14 +236,13 @@
         if isinstance(var, Constant):
             return var
         if var not in self.varmap:
-            self.varmap[var] = copyvar(None, var)
+            self.varmap[var] = var.copy()
         return self.varmap[var]
 
     def passon_vars(self, cache_key):
         if cache_key in self._passon_vars:
             return self._passon_vars[cache_key]
-        result = [copyvar(None, var)
-                      for var in self.original_passon_vars]
+        result = [var.copy() for var in self.original_passon_vars]
         self._passon_vars[cache_key] = result
         return result
 
@@ -362,8 +361,8 @@
         exc_match.concretetype = typeOf(exc_match.value)
         blocks = []
         for i, link in enumerate(afterblock.exits[1:]):
-            etype = copyvar(None, copiedexceptblock.inputargs[0])
-            evalue = copyvar(None, copiedexceptblock.inputargs[1])
+            etype = copiedexceptblock.inputargs[0].copy()
+            evalue = copiedexceptblock.inputargs[1].copy()
             passon_vars = self.passon_vars(i)
             block = Block([etype, evalue] + passon_vars)
             res = Variable()
diff --git a/rpython/translator/backendopt/ssa.py b/rpython/translator/backendopt/ssa.py
--- a/rpython/translator/backendopt/ssa.py
+++ b/rpython/translator/backendopt/ssa.py
@@ -158,8 +158,6 @@
     'graph_or_blocks' can be a graph, or just a dict that lists some blocks
     from a graph, as follows: {block: reachable-from-outside-flag}.
     """
-    from rpython.translator.unsimplify import copyvar
-
     entrymap = mkinsideentrymap(graph_or_blocks)
     builder = DataFlowFamilyBuilder(graph_or_blocks)
     variable_families = builder.get_variable_families()
@@ -203,7 +201,7 @@
             except KeyError:
                 raise Exception("SSA_to_SSI failed: no way to give a value to"
                                 " %r in %r" % (v, block))
-            w = copyvar(annotator, v)
+            w = v.copy()
             variable_families.union(v, w)
             block.renamevariables({v: w})
             block.inputargs.append(w)
diff --git a/rpython/translator/exceptiontransform.py b/rpython/translator/exceptiontransform.py
--- a/rpython/translator/exceptiontransform.py
+++ b/rpython/translator/exceptiontransform.py
@@ -1,5 +1,5 @@
 from rpython.translator.simplify import join_blocks, cleanup_graph
-from rpython.translator.unsimplify import copyvar, varoftype
+from rpython.translator.unsimplify import varoftype
 from rpython.translator.unsimplify import insert_empty_block, split_block
 from rpython.translator.backendopt import canraise, inline
 from rpython.flowspace.model import Block, Constant, Variable, Link, \
@@ -305,8 +305,7 @@
         reraise = self.comes_from_last_exception(entrymap, link)
         result = Variable()
         result.concretetype = lltype.Void
-        block = Block([copyvar(None, v)
-                       for v in graph.exceptblock.inputargs])
+        block = Block([v.copy() for v in graph.exceptblock.inputargs])
         if reraise:
             block.operations = [
                 SpaceOperation("direct_call",
@@ -345,7 +344,7 @@
         inlined, the correct exception matching blocks are produced."""
         # XXX slightly annoying: construct a graph by hand
         # but better than the alternative
-        result = copyvar(None, op.result)
+        result = op.result.copy()
         opargs = []
         inputargs = []
         callargs = []
@@ -435,7 +434,7 @@
                 result_i = l0.args.index(v_result)
                 v_result_after = normalafterblock.inputargs[result_i]
             else:
-                v_result_after = copyvar(None, v_result)
+                v_result_after = v_result.copy()
                 l0.args.append(v_result)
                 normalafterblock.inputargs.append(v_result_after)
             if true_zero:
diff --git a/rpython/translator/unsimplify.py b/rpython/translator/unsimplify.py
--- a/rpython/translator/unsimplify.py
+++ b/rpython/translator/unsimplify.py
@@ -2,15 +2,6 @@
     SpaceOperation, c_last_exception, checkgraph)
 
 
-def copyvar(annotator, v):
-    """Make a copy of the Variable v, preserving annotations and concretetype."""
-    assert isinstance(v, Variable)
-    newvar = Variable(v)
-    newvar.annotation = v.annotation
-    if hasattr(v, 'concretetype'):
-        newvar.concretetype = v.concretetype
-    return newvar
-
 def varoftype(concretetype, name=None):
     var = Variable(name)
     var.concretetype = concretetype
@@ -30,7 +21,7 @@
     vars = [v for v, keep in vars.items() if keep]
     mapping = {}
     for v in vars:
-        mapping[v] = copyvar(annotator, v)
+        mapping[v] = v.copy()
     newblock = Block(vars)
     newblock.operations.extend(newops)
     newblock.closeblock(Link(link.args, link.target))
@@ -40,7 +31,7 @@
     return newblock
 
 def insert_empty_startblock(annotator, graph):
-    vars = [copyvar(annotator, v) for v in graph.startblock.inputargs]
+    vars = [v.copy() for v in graph.startblock.inputargs]
     newblock = Block(vars)
     newblock.closeblock(Link(vars, graph.startblock))
     graph.startblock = newblock
@@ -71,7 +62,7 @@
         if var in vars_produced_in_new_block:
             return var
         if var not in varmap:
-            varmap[var] = copyvar(annotator, var)
+            varmap[var] = var.copy()
         return varmap[var]
     moved_operations = block.operations[index:]
     new_moved_ops = []
@@ -145,7 +136,7 @@
         annhelper.finish()
 
     entry_point = translator.entry_point_graph
-    args = [copyvar(translator.annotator, v) for v in entry_point.getargs()]
+    args = [v.copy() for v in entry_point.getargs()]
     extrablock = Block(args)
     v_none = varoftype(lltype.Void)
     newop = SpaceOperation('direct_call', [c_initial_func], v_none)
@@ -168,7 +159,7 @@
         annhelper.finish()
 
     entry_point = translator.entry_point_graph
-    v = copyvar(translator.annotator, entry_point.getreturnvar())
+    v = entry_point.getreturnvar().copy()
     extrablock = Block([v])
     v_none = varoftype(lltype.Void)
     newop = SpaceOperation('direct_call', [c_final_func], v_none)


More information about the pypy-commit mailing list