[pypy-svn] r51290 - pypy/dist/pypy/translator/llvm

arigo at codespeak.net arigo at codespeak.net
Tue Feb 5 14:26:12 CET 2008


Author: arigo
Date: Tue Feb  5 14:26:11 2008
New Revision: 51290

Modified:
   pypy/dist/pypy/translator/llvm/node.py
Log:
Revert r50061 as it breaks tests.


Modified: pypy/dist/pypy/translator/llvm/node.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/node.py	(original)
+++ pypy/dist/pypy/translator/llvm/node.py	Tue Feb  5 14:26:11 2008
@@ -1,16 +1,29 @@
 from pypy.rpython.lltypesystem import lltype
-from pypy.translator.gensupp import NameManager
-
-NODE_NAMES = NameManager()
 
 
 class Node(object):
     __slots__ = "name".split()
     prefix = '%'
 
+    nodename_count = {}
+    def mangle(self, name):
+        if name not in self.nodename_count:
+            self.nodename_count[name] = 1
+            return name
+        else:
+            result = '%s_%d' % (name, self.nodename_count[name])
+            self.nodename_count[name] += 1
+            # this ensures (a) doesn exist yet, and (b) adds it to the
+            # dictionary just to prevent some function called xxx_42() and clashing
+            return self.mangle(result)
+
     def make_name(self, name=''):
         " helper for creating names"
-        name = self.prefix + NODE_NAMES.uniquename(name)
+        name = self.prefix + name
+        name = self.mangle(name)
+        if " " in name or "<" in name: 
+            name = '"%s"' % name
+
         self.name = name
 
     def setup(self):



More information about the Pypy-commit mailing list