[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