[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