[pypy-svn] r18376 - pypy/dist/pypy/translator/asm/ppcgen

mwh at codespeak.net mwh at codespeak.net
Tue Oct 11 11:15:42 CEST 2005


Author: mwh
Date: Tue Oct 11 11:15:40 2005
New Revision: 18376

Modified:
   pypy/dist/pypy/translator/asm/ppcgen/asmfunc.py
   pypy/dist/pypy/translator/asm/ppcgen/symbol_lookup.py
Log:
make more code importable on non-PPC.


Modified: pypy/dist/pypy/translator/asm/ppcgen/asmfunc.py
==============================================================================
--- pypy/dist/pypy/translator/asm/ppcgen/asmfunc.py	(original)
+++ pypy/dist/pypy/translator/asm/ppcgen/asmfunc.py	Tue Oct 11 11:15:40 2005
@@ -1,7 +1,14 @@
 import py
-_ppcgen = py.magic.autopath().dirpath().join('_ppcgen.c').getpymodule()
 import mmap, struct
 
+_ppcgen = None
+
+def get_ppcgen():
+    global _ppcgen
+    if _ppcgen is None:
+        _ppcgen = py.magic.autopath().dirpath().join('_ppcgen.c').getpymodule()
+    return _ppcgen
+
 class AsmCode(object):
     def __init__(self, size):
         self.code = mmap.mmap(-1, size,
@@ -10,7 +17,7 @@
     def emit(self, insn):
         self.code.write(struct.pack('i', insn))
     def __call__(self, *args):
-        return _ppcgen.mmap_exec(self.code, args)
+        return get_ppcgen().mmap_exec(self.code, args)
     def flush_cache(self):
-        _ppcgen.mmap_flush(self.code)
-        
+        get_ppcgen().mmap_flush(self.code)
+

Modified: pypy/dist/pypy/translator/asm/ppcgen/symbol_lookup.py
==============================================================================
--- pypy/dist/pypy/translator/asm/ppcgen/symbol_lookup.py	(original)
+++ pypy/dist/pypy/translator/asm/ppcgen/symbol_lookup.py	Tue Oct 11 11:15:40 2005
@@ -1,11 +1,15 @@
-import py
 
-_ppcgen = py.magic.autopath().dirpath().join('_ppcgen.c').getpymodule()
+def lookup(sym):
+    global lookup
+    import py
 
-try:
-    from _ppcgen import NSLookupAndBindSymbol
+    _ppcgen = py.magic.autopath().dirpath().join('_ppcgen.c').getpymodule()
 
-    def lookup(sym):
-        return NSLookupAndBindSymbol('_' + sym)
-except ImportError:
-    from _ppcgen import dlsym as lookup
+    try:
+        from _ppcgen import NSLookupAndBindSymbol
+
+        def lookup(sym):
+            return NSLookupAndBindSymbol('_' + sym)
+    except ImportError:
+        from _ppcgen import dlsym as lookup
+    return lookup(sym)



More information about the Pypy-commit mailing list