[pypy-svn] r69479 - in pypy/branch/shorter-guard-path/pypy/jit/backend/x86: . test

arigo at codespeak.net arigo at codespeak.net
Fri Nov 20 18:52:38 CET 2009


Author: arigo
Date: Fri Nov 20 18:52:38 2009
New Revision: 69479

Modified:
   pypy/branch/shorter-guard-path/pypy/jit/backend/x86/ri386.py
   pypy/branch/shorter-guard-path/pypy/jit/backend/x86/test/test_ri386_auto_encoding.py
Log:
Grrr.  Test and fix for mutating global lists.  Bad idea.


Modified: pypy/branch/shorter-guard-path/pypy/jit/backend/x86/ri386.py
==============================================================================
--- pypy/branch/shorter-guard-path/pypy/jit/backend/x86/ri386.py	(original)
+++ pypy/branch/shorter-guard-path/pypy/jit/backend/x86/ri386.py	Fri Nov 20 18:52:38 2009
@@ -259,9 +259,16 @@
 xmm6 = XMM6()
 xmm7 = XMM7()
 
-registers = [eax, ecx, edx, ebx, esp, ebp, esi, edi]
-registers8 = [al, cl, dl, bl, ah, ch, dh, bh]
-xmm_registers = [xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7]
+class immutablelist(list):
+    def _dont_modify(self, *args):
+        raise Exception("don't modify this list!")
+    __delitem__ = __delslice__ = __iadd__ = __imul__ = _dont_modify
+    __setitem__ = __setslice__ = _dont_modify
+    append = extend = insert = pop = remove = reverse = sort = _dont_modify
+
+registers = immutablelist([eax, ecx, edx, ebx, esp, ebp, esi, edi])
+registers8 = immutablelist([al, cl, dl, bl, ah, ch, dh, bh])
+xmm_registers = immutablelist([xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7])
 
 for r in registers + registers8:
     r.bitmask = 1 << r.op

Modified: pypy/branch/shorter-guard-path/pypy/jit/backend/x86/test/test_ri386_auto_encoding.py
==============================================================================
--- pypy/branch/shorter-guard-path/pypy/jit/backend/x86/test/test_ri386_auto_encoding.py	(original)
+++ pypy/branch/shorter-guard-path/pypy/jit/backend/x86/test/test_ri386_auto_encoding.py	Fri Nov 20 18:52:38 2009
@@ -92,7 +92,7 @@
     return [pick1(i386.memSIB64) for i in range(COUNT2)]
 
 def xmm_tests():
-    return i386.xmm_registers
+    return i386.xmm_registers[:]
 
 def modrm8_tests():
     return i386.registers8 + [pick1(i386.memSIB8) for i in range(COUNT2)]



More information about the Pypy-commit mailing list