[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