[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