Author: Matti Picus <matti.pi...@gmail.com>
Branch: 
Changeset: r70433:3af6adc2c895
Date: 2014-04-04 13:53 +0300
http://bitbucket.org/pypy/pypy/changeset/3af6adc2c895/

Log:    disallow asmgcc on msvc only

diff --git a/rpython/config/test/test_translationoption.py 
b/rpython/config/test/test_translationoption.py
--- a/rpython/config/test/test_translationoption.py
+++ b/rpython/config/test/test_translationoption.py
@@ -1,7 +1,7 @@
 import py
 from rpython.config.translationoption import get_combined_translation_config
 from rpython.config.translationoption import set_opt_level
-from rpython.config.config import ConflictConfigError
+from rpython.config.config import ConflictConfigError, ConfigError
 from rpython.translator.platform import platform as compiler
 
 
@@ -13,5 +13,5 @@
 if compiler.name == 'msvc':
     def test_no_asmgcrot_on_msvc():
         config = get_combined_translation_config()
-        config.translation.setoption('gcrootfinder', 'asmgcc', 'required') 
-        py.test.raises(ConflictConfigError, set_opt_level, config, 'jit')
+        py.test.raises(ConfigError, config.translation.setoption, 
+                                        'gcrootfinder', 'asmgcc', 'user') 
diff --git a/rpython/config/translationoption.py 
b/rpython/config/translationoption.py
--- a/rpython/config/translationoption.py
+++ b/rpython/config/translationoption.py
@@ -4,6 +4,7 @@
 from rpython.config.config import ChoiceOption, StrOption, Config, 
ConflictConfigError
 from rpython.config.config import ConfigError
 from rpython.config.support import detect_number_of_processors
+from rpython.translator.platform import platform as compiler
 
 DEFL_INLINE_THRESHOLD = 32.4    # just enough to inline add__Int_Int()
 # and just small enough to prevend inlining of some rlist functions.
@@ -16,8 +17,13 @@
 
 if sys.platform.startswith("linux"):
     DEFL_ROOTFINDER_WITHJIT = "asmgcc"
+    ROOTFINDERS = ["n/a", "shadowstack", "asmgcc"]
+elif compiler.name == 'msvc':    
+    DEFL_ROOTFINDER_WITHJIT = "shadowstack"
+    ROOTFINDERS = ["n/a", "shadowstack"]
 else:
     DEFL_ROOTFINDER_WITHJIT = "shadowstack"
+    ROOTFINDERS = ["n/a", "shadowstack", "asmgcc"]
 
 IS_64_BITS = sys.maxint > 2147483647
 
@@ -85,7 +91,7 @@
                default=IS_64_BITS, cmdline="--gcremovetypeptr"),
     ChoiceOption("gcrootfinder",
                  "Strategy for finding GC Roots (framework GCs only)",
-                 ["n/a", "shadowstack", "asmgcc"],
+                 ROOTFINDERS,
                  "shadowstack",
                  cmdline="--gcrootfinder",
                  requires={
@@ -366,11 +372,9 @@
     # if we have specified strange inconsistent settings.
     config.translation.gc = config.translation.gc
 
-    # disallow asmgcc on OS/X and windows
+    # disallow asmgcc on OS/X
     if config.translation.gcrootfinder == "asmgcc":
         assert sys.platform != "darwin"
-        if (sys.platform == 'win32'):
-            raise ConflictConfigError("asmgcc unusable on win32")
 
 # ----------------------------------------------------------------
 
diff --git a/rpython/jit/backend/x86/test/test_zrpy_gcasmgcc.py 
b/rpython/jit/backend/x86/test/test_zrpy_gcasmgcc.py
--- a/rpython/jit/backend/x86/test/test_zrpy_gcasmgcc.py
+++ b/rpython/jit/backend/x86/test/test_zrpy_gcasmgcc.py
@@ -1,4 +1,9 @@
+import py
 from rpython.jit.backend.llsupport.test.zrpy_gc_test import 
CompileFrameworkTests
+from rpython.translator.platform import platform as compiler
+
+if compiler.name == 'msvc':
+    py.test.skip('asmgcc buggy on msvc')
 
 class TestAsmGcc(CompileFrameworkTests):
     gcrootfinder = "asmgcc"
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to