[pypy-svn] r62917 - pypy/branch/pyjitpl5/pypy/jit/backend/x86
fijal at codespeak.net
fijal at codespeak.net
Fri Mar 13 00:56:09 CET 2009
Author: fijal
Date: Fri Mar 13 00:56:09 2009
New Revision: 62917
Modified:
pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py
Log:
add unique identifiers
Modified: pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/x86/assembler.py Fri Mar 13 00:56:09 2009
@@ -20,15 +20,20 @@
# our calling convention - we pass three first args as edx, ecx and eax
# and the rest stays on the stack
-def repr_of_arg(arg):
+def repr_of_arg(memo, arg):
+ try:
+ mv = memo[arg]
+ except KeyError:
+ mv = len(memo)
+ memo[arg] = mv
if isinstance(arg, ConstInt):
- return "ci(%d)" % arg.value
+ return "ci(%d,%d)" % (mv, arg.value)
elif isinstance(arg, ConstPtr):
- return "cp(%d)" % arg.get_()
+ return "cp(%d,%d)" % (mv, arg.get_())
elif isinstance(arg, BoxInt):
- return "bi(%d)" % arg.value
+ return "bi(%d,%d)" % (mv, arg.value)
elif isinstance(arg, BoxPtr):
- return "bp(%d)" % arg.get_()
+ return "bp(%d,%d)" % (mv, arg.get_())
else:
raise NotImplementedError
@@ -100,11 +105,12 @@
print
if self.verbose and we_are_translated():
print
+ memo = {}
for op in operations:
- args = ",".join([repr_of_arg(arg) for arg in op.args])
+ args = ",".join([repr_of_arg(memo, arg) for arg in op.args])
llop.debug_print(lltype.Void, "%s %s" % (op.getopname(), args))
if op.result is not None:
- llop.debug_print(lltype.Void, " => %s" % repr_of_arg(op.result))
+ llop.debug_print(lltype.Void, " => %s" % repr_of_arg(memo, op.result))
print
for i in range(len(computed_ops)):
op = computed_ops[i]
More information about the Pypy-commit
mailing list