[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