[pypy-svn] r72248 - pypy/trunk/pypy/translator/c/gcc

afa at codespeak.net afa at codespeak.net
Mon Mar 15 16:17:07 CET 2010


Author: afa
Date: Mon Mar 15 16:16:53 2010
New Revision: 72248

Modified:
   pypy/trunk/pypy/translator/c/gcc/trackgcroot.py
Log:
Add support in trackgcroot.py for the /arch:SS2 option on Windows.

Don't enable it yet, since I reliably crash on the first gc collection.


Modified: pypy/trunk/pypy/translator/c/gcc/trackgcroot.py
==============================================================================
--- pypy/trunk/pypy/translator/c/gcc/trackgcroot.py	(original)
+++ pypy/trunk/pypy/translator/c/gcc/trackgcroot.py	Mon Mar 15 16:16:53 2010
@@ -368,12 +368,12 @@
         return []
 
     IGNORE_OPS_WITH_PREFIXES = dict.fromkeys([
-        'cmp', 'test', 'set', 'sahf', 'cltd', 'cld', 'std',
+        'cmp', 'test', 'set', 'sahf', 'lahf', 'cltd', 'cld', 'std',
         'rep', 'movs', 'lods', 'stos', 'scas', 'cwtl', 'prefetch',
         # floating-point operations cannot produce GC pointers
         'f',
-        'cvt', 'ucomi', 'subs', 'subp' , 'adds', 'addp', 'xorp', 'movap',
-        'movd', 'movlp', 'sqrtsd',
+        'cvt', 'ucomi', 'comi', 'subs', 'subp' , 'adds', 'addp', 'xorp',
+        'movap', 'movd', 'movlp', 'sqrtsd',
         'mins', 'minp', 'maxs', 'maxp', 'unpck', 'pxor', 'por', # sse2
         # arithmetic operations should not produce GC pointers
         'inc', 'dec', 'not', 'neg', 'or', 'and', 'sbb', 'adc',
@@ -381,6 +381,8 @@
         'bswap', 'bt', 'rdtsc',
         # zero-extending moves should not produce GC pointers
         'movz',
+        # quadword operations
+        'movq',
         ])
 
     visit_movb = visit_nop
@@ -1176,11 +1178,18 @@
             # with other modules.
             if line.startswith("PUBLIC\t__real@"):
                 line = '; ' + line
+            if line.startswith("PUBLIC\t__mask@@"):
+                line = '; ' + line
             elif line.startswith("PUBLIC\t??_C@"):
                 line = '; ' + line
             elif line == "PUBLIC\t__$ArrayPad$\n":
                 line = '; ' + line
 
+            # The msvc compiler writes "fucomip ST(1)" when the correct
+            # syntax is "fucomip ST, ST(1)"
+            if line == "\tfucomip\tST(1)\n":
+                line = "\tfucomip\tST, ST(1)\n"
+
             # Because we insert labels in the code, some "SHORT" jumps
             # are now longer than 127 bytes.  We turn them all into
             # "NEAR" jumps.  Note that the assembler allocates space



More information about the Pypy-commit mailing list