[pypy-svn] r48869 - in pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm: . module

arigo at codespeak.net arigo at codespeak.net
Tue Nov 20 19:57:36 CET 2007


Author: arigo
Date: Tue Nov 20 19:57:35 2007
New Revision: 48869

Modified:
   pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/externs2ll.py
   pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/extfuncnode.py
   pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/module/genexterns.c
Log:
(rxe, arigo)  Kill unneeded code in llvm.


Modified: pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/externs2ll.py
==============================================================================
--- pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/externs2ll.py	(original)
+++ pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/externs2ll.py	Tue Nov 20 19:57:35 2007
@@ -9,46 +9,8 @@
 from pypy.translator.llvm.buildllvm import llvm_gcc_version
 
 from pypy.tool.udir import udir
-from pypy.rpython.module import ll_stack
-
-ll_stack_too_big = """
-
-define internal ccc i1 @LL_stack_too_big_() {
-    %result = call ccc i32 @LL_stack_too_big()
-    %tmp = trunc i32 %result to i1
-    ret i1 %tmp
-}
-
-"""
-
-# table of functions hand-written in src/ll_*.h
-# Note about *.im_func: The annotator and the rtyper expect direct
-# references to functions, so we cannot insert classmethods here.
-
-EXTERNALS = {
-    ll_stack.ll_stack_unwind: 'LL_stack_unwind',
-    ll_stack.ll_stack_too_big: 'LL_stack_too_big_',
-    }
 
 def predeclare_stuff(c_db):
-    modules = {}
-    def module_name(c_name):
-        frags = c_name[3:].split('_')
-        if frags[0] == '':
-            return '_' + frags[1]
-        else:
-            return frags[0]
-
-    for func, funcobj in c_db.externalfuncs.items():
-        c_name = EXTERNALS[func]
-        # construct a define LL_NEED_<modname> to make it possible to isolate in-development externals and headers
-        modname = module_name(c_name)
-        if modname not in modules:
-            modules[modname] = True
-            yield 'LL_NEED_%s' % modname.upper(), 1
-        funcptr = funcobj._as_ptr()
-        yield c_name, funcptr
-
     exctransformer = c_db.exctransformer
     yield ('_rpyexc_occured_ptr',  exctransformer._rpyexc_occured_ptr.value)
     yield ('rpyexc_fetch_type_ptr', exctransformer.rpyexc_fetch_type_ptr.value)
@@ -228,7 +190,6 @@
         predeclarefn("__ENTRY_POINT__", entrynode.get_ref())
         ccode.append('#define ENTRY_POINT_DEFINED 1\n\n')
 
-    LL_stack_too_big_ = False
     for c_name, obj in extern_decls:
         if isinstance(obj, lltype.LowLevelType):
             s = "#define %s struct %s\n%s;\n" % (c_name, c_name, c_name)
@@ -243,8 +204,6 @@
             pass
 
         elif type(c_name) is str and type(obj) is int:
-            if c_name == 'LL_NEED_STACK':
-                LL_stack_too_big_ = True
             ccode.append("#define\t%s\t%d\n" % (c_name, obj))
 
         else:
@@ -269,9 +228,4 @@
     # append our source file
     ccode.append(open(get_module_file('genexterns.c')).read())
     llcode = get_ll("".join(ccode), function_names, default_cconv)
-
-    # XXX enormous temporary hack
-    if LL_stack_too_big_:
-        llcode += ll_stack_too_big
-        
     return llcode

Modified: pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/extfuncnode.py
==============================================================================
--- pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/extfuncnode.py	(original)
+++ pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/extfuncnode.py	Tue Nov 20 19:57:35 2007
@@ -1,13 +1,9 @@
 from pypy.translator.llvm.node import FuncNode
-from pypy.translator.llvm.externs2ll import EXTERNALS
 from pypy.rpython.lltypesystem import lltype
 
 class ExternalFuncNode(FuncNode):
-    def __init__(self, db, value, mapname=None):
-        if mapname is None:
-            name = value._name
-        else:
-            name = EXTERNALS[mapname]
+    def __init__(self, db, value):
+        name = value._name
         self.db = db
         self.value = value
         self.name = "@" + name

Modified: pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/module/genexterns.c
==============================================================================
--- pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/module/genexterns.c	(original)
+++ pypy/branch/kill-remaining-suggested-primitives/pypy/translator/llvm/module/genexterns.c	Tue Nov 20 19:57:35 2007
@@ -2,24 +2,6 @@
 
 char *LLVM_RPython_StartupCode(void);
 
-#define RPyRaiseSimpleException(exctype, errormsg) raise##exctype(errormsg);
-
-// XXX abort() this is just to make tests pass.  actually it is a million times
-// better than it was since it used to basically be a nooop.
-
-// all of these will go away at some point
-
-#define FAKE_ERROR(name) \
-  int raisePyExc_##name(char *x) { \
-    abort(); \
-   }
-
-#ifdef LL_NEED_STACK
-  FAKE_ERROR(RuntimeError);
-  #include "src/thread.h"
-  #include "src/stack.h"
-#endif
-
 
 // raw malloc code
 char *raw_malloc(long size) {



More information about the Pypy-commit mailing list