[pypy-svn] r39797 - in pypy/dist/pypy/translator/llvm: . test
rxe at codespeak.net
rxe at codespeak.net
Sat Mar 3 14:16:48 CET 2007
Author: rxe
Date: Sat Mar 3 14:16:46 2007
New Revision: 39797
Modified:
pypy/dist/pypy/translator/llvm/genllvm.py
pypy/dist/pypy/translator/llvm/test/runtest.py
pypy/dist/pypy/translator/llvm/test/test_stackless.py
Log:
(mwh, rxe) shuffle code around a bit, the genllvm_compile() is only ever called from tests. now we can do some refactoring
Modified: pypy/dist/pypy/translator/llvm/genllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/genllvm.py (original)
+++ pypy/dist/pypy/translator/llvm/genllvm.py Sat Mar 3 14:16:46 2007
@@ -17,7 +17,6 @@
from pypy.translator.llvm.externs2ll import setup_externs, generate_llfile
from pypy.translator.llvm.gc import GcPolicy
from pypy.translator.llvm.log import log
-from pypy import conftest
from pypy.translator.llvm.buildllvm import llvm_is_on_path, postfix
class GenLLVM(object):
@@ -294,70 +293,3 @@
for s in stats:
log('STATS %s' % str(s))
-#______________________________________________________________________________
-
-def genllvm_compile(function,
- annotation,
-
- # genllvm options
- gcpolicy=None,
- standalone=False,
- stackless=False,
-
- # debug options
- view=False,
- debug=False,
- logging=False,
- log_source=False,
-
- # pass to compile
- optimize=True,
- **kwds):
-
- """ helper for genllvm """
-
- assert llvm_is_on_path()
-
- # annotate/rtype
- from pypy.translator.translator import TranslationContext
- from pypy.translator.backendopt.all import backend_optimizations
- from pypy.config.pypyoption import get_pypy_config
- config = get_pypy_config(translating=True)
- config.translation.gc = 'boehm'
- translator = TranslationContext(config=config)
- translator.buildannotator().build_types(function, annotation)
- translator.buildrtyper().specialize()
-
- # use backend optimizations?
- if optimize:
- backend_optimizations(translator, raisingop2direct_call=True)
- else:
- backend_optimizations(translator,
- raisingop2direct_call=True,
- inline_threshold=0,
- mallocs=False,
- merge_if_blocks=False,
- constfold=False)
-
- # note: this is without stackless and policy transforms
- if view or conftest.option.view:
- translator.view()
-
- if stackless:
- from pypy.translator.transform import insert_ll_stackcheck
- insert_ll_stackcheck(translator)
-
- # create genllvm
- gen = GenLLVM(translator,
- standalone,
- debug=debug,
- logging=logging,
- stackless=stackless)
-
- filename = gen.gen_llvm_source(function)
-
- log_source = kwds.pop("log_source", False)
- if log_source:
- log(open(filename).read())
-
- return gen.compile_llvm_source(optimize=optimize, **kwds)
Modified: pypy/dist/pypy/translator/llvm/test/runtest.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/test/runtest.py (original)
+++ pypy/dist/pypy/translator/llvm/test/runtest.py Sat Mar 3 14:16:46 2007
@@ -1,7 +1,8 @@
import py
from pypy.tool import isolate
-from pypy.translator.llvm.genllvm import genllvm_compile
from pypy.translator.llvm.buildllvm import llvm_is_on_path, llvm_version, gcc_version
+from pypy.translator.llvm.genllvm import GenLLVM
+
optimize_tests = False
MINIMUM_LLVM_VERSION = 1.9
@@ -11,6 +12,8 @@
run_isolated_only = True
do_not_isolate = False
+from pypy import conftest
+
def _cleanup(leave=0):
# no test should ever need more than 5 compiled functions
if leave:
@@ -46,6 +49,74 @@
return False
return True
+#______________________________________________________________________________
+
+def genllvm_compile(function,
+ annotation,
+
+ # genllvm options
+ gcpolicy=None,
+ standalone=False,
+ stackless=False,
+
+ # debug options
+ view=False,
+ debug=False,
+ logging=False,
+ log_source=False,
+
+ # pass to compile
+ optimize=True,
+ **kwds):
+
+ """ helper for genllvm """
+
+ assert llvm_is_on_path()
+
+ # annotate/rtype
+ from pypy.translator.translator import TranslationContext
+ from pypy.translator.backendopt.all import backend_optimizations
+ from pypy.config.pypyoption import get_pypy_config
+ config = get_pypy_config(translating=True)
+ config.translation.gc = 'boehm'
+ translator = TranslationContext(config=config)
+ translator.buildannotator().build_types(function, annotation)
+ translator.buildrtyper().specialize()
+
+ # use backend optimizations?
+ if optimize:
+ backend_optimizations(translator, raisingop2direct_call=True)
+ else:
+ backend_optimizations(translator,
+ raisingop2direct_call=True,
+ inline_threshold=0,
+ mallocs=False,
+ merge_if_blocks=False,
+ constfold=False)
+
+ # note: this is without stackless and policy transforms
+ if view or conftest.option.view:
+ translator.view()
+
+ if stackless:
+ from pypy.translator.transform import insert_ll_stackcheck
+ insert_ll_stackcheck(translator)
+
+ # create genllvm
+ gen = GenLLVM(translator,
+ standalone,
+ debug=debug,
+ logging=logging,
+ stackless=stackless)
+
+ filename = gen.gen_llvm_source(function)
+
+ log_source = kwds.pop("log_source", False)
+ if log_source:
+ log(open(filename).read())
+
+ return gen.compile_llvm_source(optimize=optimize, **kwds)
+
def compile_test(function, annotation, isolate=True, **kwds):
" returns module and compiled function "
if llvm_test():
Modified: pypy/dist/pypy/translator/llvm/test/test_stackless.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/test/test_stackless.py (original)
+++ pypy/dist/pypy/translator/llvm/test/test_stackless.py Sat Mar 3 14:16:46 2007
@@ -15,9 +15,11 @@
os.write(1, str(fn()) + "\n")
return 0
- exe_path = genllvm_compile(entry_point, [s_list_of_strings], optimize=False,
- exe_name="stacktest", standalone=True,
- stackless=True, logging=False)
+ # XXX run this with interactive
+ #exe_path = genllvm_compile(entry_point, [s_list_of_strings], optimize=False,
+ # exe_name="stacktest", standalone=True,
+ # stackless=True, logging=False)
+
res = os.system(exe_path)
return int(res.strip())
More information about the Pypy-commit
mailing list