[pypy-svn] r48800 - in pypy/dist/pypy/translator/llvm: . module test
rxe at codespeak.net
rxe at codespeak.net
Mon Nov 19 16:32:38 CET 2007
Author: rxe
Date: Mon Nov 19 16:32:38 2007
New Revision: 48800
Modified:
pypy/dist/pypy/translator/llvm/genllvm.py
pypy/dist/pypy/translator/llvm/module/genexterns.c
pypy/dist/pypy/translator/llvm/test/runtest.py
Log:
resolve some XXXs - mostly by just removing them.
Modified: pypy/dist/pypy/translator/llvm/genllvm.py
==============================================================================
--- pypy/dist/pypy/translator/llvm/genllvm.py (original)
+++ pypy/dist/pypy/translator/llvm/genllvm.py Mon Nov 19 16:32:38 2007
@@ -82,6 +82,30 @@
create ll file for c file
create codewriter """
+ if self.standalone:
+ # XXX this requires jumping through way too many hoops
+
+ from pypy.rpython.lltypesystem import rffi
+ getargc = rffi.llexternal('__pypy_getargc', [], rffi.INT)
+ getargv = rffi.llexternal('__pypy_getargv', [], rffi.CCHARPP)
+
+ def entry_point(args=None):
+ argc = getargc()
+ argv = getargv()
+ if args is None:
+ args = []
+ for ii in range(argc):
+ s = rffi.charp2str(argv[ii])
+ args.append(s)
+ return func(args)
+ from pypy.annotation.listdef import s_list_of_strings
+ graph = self.translator.rtyper.annotate_helper(entry_point, [s_list_of_strings])
+ self.translator.rtyper.specialize_more_blocks()
+ # XXX this is really bad
+ from pypy.translator.backendopt.all import backend_optimizations
+ backend_optimizations(self.translator)
+ func = entry_point
+
# XXX please dont ask!
from pypy.translator.c.genc import CStandaloneBuilder
cbuild = CStandaloneBuilder(self.translator, func, config=self.config)
Modified: pypy/dist/pypy/translator/llvm/module/genexterns.c
==============================================================================
--- pypy/dist/pypy/translator/llvm/module/genexterns.c (original)
+++ pypy/dist/pypy/translator/llvm/module/genexterns.c Mon Nov 19 16:32:38 2007
@@ -47,41 +47,16 @@
#ifdef ENTRY_POINT_DEFINED
-int __ENTRY_POINT__(RPyListOfString *);
+int __ENTRY_POINT__(voidzd *);
-int main(int argc, char *argv[])
-{
- XXX
- char *errmsg;
- int i, exitcode;
- RPyListOfString *list;
- errmsg = RPython_StartupCode();
- if (errmsg) goto error;
-
- list = _RPyListOfString_New(argc);
- if (_RPyExceptionOccurred()) goto memory_out;
- for (i=0; i<argc; i++) {
- RPyString *s = RPyString_FromString(argv[i]);
-
- if (_RPyExceptionOccurred()) {
- goto memory_out;
- }
-
- _RPyListOfString_SetItem(list, i, s);
- }
-
- exitcode = __ENTRY_POINT__(list);
-
- if (_RPyExceptionOccurred()) {
- goto error; // XXX see genc
- }
- return exitcode;
-
- memory_out:
- errmsg = "out of memory";
- error:
+int main(int argc, char *argv[]) {
+ char *errmsg = RPython_StartupCode();
+ if (errmsg) {
fprintf(stderr, "Fatal error during initialization: %s\n", errmsg);
return 1;
+ }
+
+ return __ENTRY_POINT__(NULL);
}
#else
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 Mon Nov 19 16:32:38 2007
@@ -156,8 +156,8 @@
driver.compile()
if conftest.option.view:
driver.translator.view()
- return driver.c_module, driver.c_entryp
-
+ return driver
+
def compile_test(function, annotation, isolate_hint=True, **kwds):
" returns module and compiled function "
llvm_test()
@@ -171,8 +171,9 @@
# maintain only 3 isolated process (if any)
_cleanup(leave=3)
optimize = kwds.pop('optimize', optimize_tests)
- mod, fn = genllvm_compile(function, annotation, optimize=optimize,
- isolate=isolate, **kwds)
+ driver = genllvm_compile(function, annotation, optimize=optimize,
+ isolate=isolate, **kwds)
+ mod, fn = driver.c_module, driver.c_entryp
if isolate:
_ext_modules.append(mod)
return mod, wrapfn(fn)
@@ -181,6 +182,9 @@
" returns compiled function "
return compile_test(function, annotation, isolate_hint=isolate_hint, **kwds)[1]
+def compile_standalone(function, **kwds):
+ optimize = kwds.pop('optimize', optimize_tests)
+ drvier = genllvm_compile(function, None, optimize=optimize, **kwds)
#______________________________________________________________________________
# XXX Work in progress, this was mostly copied from cli
More information about the Pypy-commit
mailing list