[pypy-svn] r8471 - pypy/dist/pypy/objspace/flow
odie at codespeak.net
odie at codespeak.net
Sat Jan 22 17:16:49 CET 2005
Author: odie
Date: Sat Jan 22 17:16:49 2005
New Revision: 8471
Modified:
pypy/dist/pypy/objspace/flow/flowcontext.py
pypy/dist/pypy/objspace/flow/model.py
Log:
Propagate variable names to improve readability.
Modified: pypy/dist/pypy/objspace/flow/flowcontext.py
==============================================================================
--- pypy/dist/pypy/objspace/flow/flowcontext.py (original)
+++ pypy/dist/pypy/objspace/flow/flowcontext.py Sat Jan 22 17:16:49 2005
@@ -111,6 +111,10 @@
return
next_instr = frame.next_instr
self.crnt_offset = next_instr # save offset for opcode
+ varnames = frame.code.getvarnames()
+ for name, w_value in zip(varnames, frame.getfastscope()):
+ if isinstance(w_value, Variable):
+ w_value.rename(name)
if next_instr in self.joinpoints:
currentstate = FrameState(frame)
# can 'currentstate' be merged with one of the blocks that
@@ -223,6 +227,6 @@
if isinstance(node, EggBlock):
mapping = {}
for a in node.inputargs:
- mapping[a] = Variable()
+ mapping[a] = Variable(a)
node.renamevariables(mapping)
traverse(fixegg, self.graph)
Modified: pypy/dist/pypy/objspace/flow/model.py
==============================================================================
--- pypy/dist/pypy/objspace/flow/model.py (original)
+++ pypy/dist/pypy/objspace/flow/model.py Sat Jan 22 17:16:49 2005
@@ -118,15 +118,31 @@
class Variable:
counter = 0
instances = {}
+ renamed = False
+
def __init__(self, name=None):
- if name is None:
- name = 'v%d' % Variable.counter
- Variable.counter += 1
- self.name = name
- Variable.instances[name] = self
+ self.name = 'v%d' % Variable.counter
+ Variable.instances[self.name] = self
+ Variable.counter += 1
+ if name is not None:
+ self.rename(name)
+
def __repr__(self):
return '%s' % self.name
+ def rename(self, name):
+ if self.renamed:
+ return
+ if isinstance(name, Variable):
+ if not name.renamed:
+ return
+ name = name.name[:name.name.rfind('_')]
+ del Variable.instances[self.name]
+ self.renamed = True
+ self.name = name + '_' + self.name[1:]
+ Variable.instances[self.name] = self
+
+
class Constant:
def __init__(self, value):
self.value = value # a concrete value
More information about the Pypy-commit
mailing list