[pypy-svn] r18136 - pypy/dist/pypy/objspace/flow

tismer at codespeak.net tismer at codespeak.net
Tue Oct 4 16:11:50 CEST 2005


Author: tismer
Date: Tue Oct  4 16:11:49 2005
New Revision: 18136

Modified:
   pypy/dist/pypy/objspace/flow/model.py
Log:
simplified Variable a bit, again.
Not using intern, but storing a (name, nr) tuple, instead.
Numbers are now bound lazily in all cases.
This creates slightly more sorted output.

Modified: pypy/dist/pypy/objspace/flow/model.py
==============================================================================
--- pypy/dist/pypy/objspace/flow/model.py	(original)
+++ pypy/dist/pypy/objspace/flow/model.py	Tue Oct  4 16:11:49 2005
@@ -213,8 +213,8 @@
 class Variable(object):
     __slots__ = ["_name", "_nr", "concretetype"]
 
-    dummyname = intern('v')
-    namesdict = {dummyname : 0}
+    dummyname = 'v'
+    namesdict = {dummyname : (dummyname, 0)}
 
     def name(self):
         _name = self._name
@@ -222,8 +222,8 @@
         if _nr == -1:
             # consume numbers lazily
             nd = self.namesdict
-            _nr = self._nr = nd[_name]
-            nd[_name] = _nr + 1
+            _nr = self._nr = nd[_name][1]
+            nd[_name] = (_name, _nr + 1)
         return "%s%d" % (_name, _nr)
     name = property(name)
 
@@ -234,7 +234,7 @@
     def __init__(self, name=None):
         self._name = self.dummyname
         self._nr = -1
-        # wait with assigning a vxxx number until the name is requested
+        # numbers are bound lazily, when the name is requested
         if name is not None:
             self.rename(name)
 
@@ -251,17 +251,11 @@
                 return
         else:
             # remove strange characters in the name
-            name = name.translate(PY_IDENTIFIER)
-            if not name:
-                return
+            name = name.translate(PY_IDENTIFIER) + '_'
             if name[0] <= '9':   # skipped the   '0' <=   which is always true
                 name = '_' + name
-            name = intern(name + '_')
-        nd = self.namesdict
-        nr = nd.get(name, 0)
-        nd[name] = nr + 1
+            name = self.namesdict.setdefault(name, (name, 0))[0]
         self._name = name
-        self._nr = nr
 
     def set_name_from(self, v):
         # this is for SSI_to_SSA only which should not know about internals



More information about the Pypy-commit mailing list