[pypy-svn] r33175 - pypy/dist/pypy/translator/asm/ppcgen
mwh at codespeak.net
mwh at codespeak.net
Wed Oct 11 19:01:44 CEST 2006
Author: mwh
Date: Wed Oct 11 19:01:43 2006
New Revision: 33175
Modified:
pypy/dist/pypy/translator/asm/ppcgen/rassemblermaker.py
Log:
small tweaks to rassemblermaker
Modified: pypy/dist/pypy/translator/asm/ppcgen/rassemblermaker.py
==============================================================================
--- pypy/dist/pypy/translator/asm/ppcgen/rassemblermaker.py (original)
+++ pypy/dist/pypy/translator/asm/ppcgen/rassemblermaker.py Wed Oct 11 19:01:43 2006
@@ -31,21 +31,19 @@
fieldvalues.append((field, field.name))
body = ['v = 0']
assert 'v' not in sig # that wouldn't be funny
+ #body.append('print %r'%name + ', ' + ', '.join(["'%s:', %s"%(s, s) for s in sig]))
for field, value in fieldvalues:
body.append('v |= (%3s & %#05x) << %d'%(value,
field.mask,
(32 - field.right - 1)))
- body.append('self.insts.append(v)')
+ body.append('self.emit(v)')
src = 'def %s(self, %s):\n %s'%(name, ', '.join(sig), '\n '.join(body))
d = {}
+ #print src
exec compile2(src) in d
return d[name]
-_rassembler_cache = {}
-
def make_rassembler(cls):
- if cls in _rassembler_cache:
- return _rassembler_cache[cls]
bases = [make_rassembler(b) for b in cls.__bases__]
ns = {}
for k, v in cls.__dict__.iteritems():
@@ -53,4 +51,7 @@
v = make_func(k, v)
ns[k] = v
rcls = type('R' + cls.__name__, tuple(bases), ns)
+ def emit(self, value):
+ self.insts.append(value)
+ rcls.emit = emit
return rcls
More information about the Pypy-commit
mailing list