[pypy-svn] r39813 - in pypy/dist/pypy/translator: . llvm

rxe at codespeak.net rxe at codespeak.net
Sat Mar 3 16:04:04 CET 2007


Author: rxe
Date: Sat Mar  3 16:04:01 2007
New Revision: 39813

Modified:
   pypy/dist/pypy/translator/driver.py
   pypy/dist/pypy/translator/llvm/genllvm.py
Log:
(mwh, rxe) start making the interface between genllvm and driver sane(r)

Modified: pypy/dist/pypy/translator/driver.py
==============================================================================
--- pypy/dist/pypy/translator/driver.py	(original)
+++ pypy/dist/pypy/translator/driver.py	Sat Mar  3 16:04:01 2007
@@ -476,7 +476,7 @@
 
         self.llvmgen = genllvm.GenLLVM(translator, self.standalone)
 
-        llvm_filename = self.llvmgen.gen_llvm_source(self.entry_point)
+        llvm_filename = self.llvmgen.gen_source(self.entry_point)
         self.log.info("written: %s" % (llvm_filename,))
     #
     task_source_llvm = taskdef(task_source_llvm, 
@@ -487,10 +487,10 @@
         gen = self.llvmgen
         if self.standalone:
             exe_name = (self.exe_name or 'testing') % self.get_info()
-            self.c_entryp = gen.compile_llvm_source(exe_name=exe_name)
+            self.c_entryp = gen.compile_standalone(exe_name)
             self.create_exe()
         else:
-            self.c_module, self.c_entryp = gen.compile_llvm_source()
+            self.c_module, self.c_entryp = gen.compile_module()
     #
     task_compile_llvm = taskdef(task_compile_llvm, 
                                 ['source_llvm'], 

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 16:04:01 2007
@@ -33,9 +33,7 @@
         
         self.config = translator.config
 
-        self.source_generated = False
-
-    def gen_llvm_source(self, func):
+    def gen_source(self, func):
         self._checkpoint()
 
         codewriter = self.setup(func)
@@ -48,7 +46,6 @@
         # write bottom part of llvm file
         self.write_implementations(codewriter)
 
-        self.source_generated = True
         self._checkpoint('done')
         codewriter.close()
         return self.filename
@@ -221,29 +218,17 @@
         codewriter.ret("sbyte*", "null")
         codewriter.closefunc()
 
-    def compile_llvm_source(self, optimize=True, exe_name=None):
-        assert self.source_generated
-
-        assert hasattr(self, "filename")
-        if exe_name is not None:
-            assert self.standalone
-            return buildllvm.make_module_from_llvm(self, self.filename,
-                                                   optimize=optimize,
-                                                   exe_name=exe_name)
-        else:
-            assert not self.standalone
+    def compile_module(self):
+        assert not self.standalone
 
-            # use pyrex to create module for CPython
-            postfix = ''
-            basename = self.filename.purebasename + '_wrapper' + postfix + '.pyx'
-            pyxfile = self.filename.new(basename = basename)
-            write_pyx_wrapper(self, pyxfile)    
-            info = buildllvm.make_module_from_llvm(self, self.filename,
-                                                   pyxfile=pyxfile,
-                                                   optimize=optimize)
-
-            mod, wrap_fun = self.get_module(*info)
-            return mod, wrap_fun
+        # use pyrex to create module for CPython
+        postfix = ''
+        basename = self.filename.purebasename + '_wrapper' + postfix + '.pyx'
+        pyxfile = self.filename.new(basename = basename)
+        write_pyx_wrapper(self, pyxfile)    
+        info = buildllvm.make_module_from_llvm(self, self.filename, pyxfile=pyxfile)
+        mod, wrap_fun = self.get_module(*info)
+        return mod, wrap_fun
 
     def get_module(self, modname, dirpath):
         if self.config.translation.llvm.isolate:
@@ -255,6 +240,11 @@
         wrap_fun = getattr(mod, 'pypy_' + self.entry_func_name + "_wrapper")
         return mod, wrap_fun
 
+    def compile_standalone(self, exe_name):
+        assert self.standalone
+        return buildllvm.make_module_from_llvm(self, self.filename,
+                                               exe_name=exe_name)
+
     def _checkpoint(self, msg=None):
         if not self.config.translation.llvm.logging:
             return



More information about the Pypy-commit mailing list