[pypy-svn] r72268 - in pypy/trunk/pypy/jit/backend: . test

arigo at codespeak.net arigo at codespeak.net
Tue Mar 16 10:33:04 CET 2010


Author: arigo
Date: Tue Mar 16 10:33:03 2010
New Revision: 72268

Added:
   pypy/trunk/pypy/jit/backend/test/test_detect_cpu.py   (contents, props changed)
Modified:
   pypy/trunk/pypy/jit/backend/detect_cpu.py
Log:
A refactoring and a test for detect_cpu.


Modified: pypy/trunk/pypy/jit/backend/detect_cpu.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/detect_cpu.py	(original)
+++ pypy/trunk/pypy/jit/backend/detect_cpu.py	Tue Mar 16 10:33:03 2010
@@ -49,20 +49,25 @@
             model = 'x86-without-sse2'
     return model
 
-def getcpuclass(backend_name="auto"):
+def getcpuclassname(backend_name="auto"):
     if backend_name == "auto":
         backend_name = autodetect()
     if backend_name in ('i386', 'x86'):
-        from pypy.jit.backend.x86.runner import CPU
+        return "pypy.jit.backend.x86.runner", "CPU"
     elif backend_name == 'x86-without-sse2':
-        from pypy.jit.backend.x86.runner import CPU386_NO_SSE2 as CPU
+        return "pypy.jit.backend.x86.runner", "CPU386_NO_SSE2"
     elif backend_name == 'cli':
-        from pypy.jit.backend.cli.runner import CliCPU as CPU
+        return "pypy.jit.backend.cli.runner", "CliCPU"
     elif backend_name == 'llvm':
-        from pypy.jit.backend.llvm.runner import LLVMCPU as CPU
+        return "pypy.jit.backend.llvm.runner", "LLVMCPU"
     else:
         raise ProcessorAutodetectError, "unsupported cpu '%s'" % backend_name
-    return CPU
+
+def getcpuclass(backend_name="auto"):
+    modname, clsname = getcpuclassname(backend_name)
+    mod = __import__(modname, {}, {}, clsname)
+    return getattr(mod, clsname)
 
 if __name__ == '__main__':
     print autodetect()
+    print getcpuclassname()

Added: pypy/trunk/pypy/jit/backend/test/test_detect_cpu.py
==============================================================================
--- (empty file)
+++ pypy/trunk/pypy/jit/backend/test/test_detect_cpu.py	Tue Mar 16 10:33:03 2010
@@ -0,0 +1,28 @@
+from pypy.jit.backend.detect_cpu import *
+
+
+def test_autodetect():
+    try:
+        name = autodetect()
+    except ProcessorAutodetectError:
+        pass
+    else:
+        assert isinstance(name, str)
+
+def test_getcpuclassname():
+    try:
+        modname, clsname = getcpuclassname()
+    except ProcessorAutodetectError:
+        pass
+    else:
+        assert isinstance(modname, str)
+        assert isinstance(clsname, str)
+
+def test_getcpuclass():
+    try:
+        cpu = getcpuclass()
+    except ProcessorAutodetectError:
+        pass
+    else:
+        from pypy.jit.backend.model import AbstractCPU
+        assert issubclass(cpu, AbstractCPU)



More information about the Pypy-commit mailing list