per-function jit compiler

Luis M. González luismgz at gmail.com
Tue Apr 6 02:32:55 EDT 2010


This post gave me an idea: http://groups.google.com/group/comp.lang.python/msg/5d75080707104b76

What if I write a simple decorator to figure out the types of every
function, and then we use it as a base for a simple method-jit
compiler for python?

example:

def typer(f):
        def wrap(*args):
            a = f.func_code.co_varnames
            b = [type(i) for i in args]
            return dict(zip(a,b))
        return wrap

@typer
def spam(a, b, c=3, d=4):
        pass

>>> spam(8,'hello',9.9, 10)
{'a': <type 'int'>, 'c': <type 'float'>, 'b': <type 'str'>, 'd':<type
'int'>}

So by using this information, we record all the argument types used
the first time each function/method is executed, and then we generate
optimized code for them.
>From this point on, a guard should check if all arguments remain the
same and, if so, the optimized code is run.
Otherwise, just fall back to the interpreter.

He! I have no idea how to implement it...
Any guru out there?
Luis



More information about the Python-list mailing list