Author: Carl Friedrich Bolz <[email protected]>
Branch:
Changeset: r78417:cadcfc72e119
Date: 2015-07-02 18:34 +0200
http://bitbucket.org/pypy/pypy/changeset/cadcfc72e119/
Log: add get_translation_config function to get at the (implicitly anyway
global) translation config object
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
@@ -2,6 +2,8 @@
import py
from rpython.config.translationoption import get_combined_translation_config
from rpython.config.translationoption import set_opt_level
+from rpython.config.translationoption import get_translation_config
+from rpython.config import translationoption
from rpython.config.config import ConflictConfigError, ConfigError
from rpython.translator.platform import platform as compiler
@@ -16,3 +18,23 @@
config = get_combined_translation_config()
config.translation.gcrootfinder = "asmgcc"
py.test.raises(ConfigError, set_opt_level, config, 'jit')
+
+
+def test_get_translation_config():
+ from rpython.translator.interactive import Translation
+ from rpython.config import config
+ def f(x):
+ config = get_translation_config()
+ if config is not None:
+ return config.translating
+ return False
+
+ t = Translation(f, [int])
+ config = t.config
+
+ # do the patching
+ t.annotate()
+ retvar = t.context.graphs[0].returnblock.inputargs[0]
+ assert t.context.annotator.binding(retvar).const
+
+ assert get_translation_config() is config # check during import time
diff --git a/rpython/config/translationoption.py
b/rpython/config/translationoption.py
--- a/rpython/config/translationoption.py
+++ b/rpython/config/translationoption.py
@@ -6,6 +6,7 @@
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.
@@ -392,3 +393,16 @@
opt = config.translation.platform
cc = config.translation.cc
return pick_platform(opt, cc)
+
+
+
+# when running a translation, this is patched
+# XXX evil global variable
+_GLOBAL_TRANSLATIONCONFIG = None
+
+
+def get_translation_config():
+ """ Return the translation config when translating. When running
+ un-translated returns None """
+ return _GLOBAL_TRANSLATIONCONFIG
+
diff --git a/rpython/translator/driver.py b/rpython/translator/driver.py
--- a/rpython/translator/driver.py
+++ b/rpython/translator/driver.py
@@ -67,14 +67,16 @@
disable=[],
exe_name=None, extmod_name=None,
config=None, overrides=None):
+ from rpython.config import translationoption
self.timer = Timer()
SimpleTaskEngine.__init__(self)
self.log = log
if config is None:
- from rpython.config.translationoption import
get_combined_translation_config
- config = get_combined_translation_config(translating=True)
+ config =
translationoption.get_combined_translation_config(translating=True)
+ # XXX patch global variable with translation config
+ translationoption._GLOBAL_TRANSLATIONCONFIG = config
self.config = config
if overrides is not None:
self.config.override(overrides)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit