lightning
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
This variant of GNU Lightning version 1.2 is modified for Racket: * For PowerPC, branches can be generated in long-jump mode, so that patched addresses are not limited to a 2^16 or 2^26 difference from the current program counter. * For PowerPC, arguments are extracted directly from the original registers by getarg. * For PowerPC, jit_prolog() leaves room for three local variables. * For Darwin i386, jit_prepare() assumes that the stack is 16-byte aligned, and it preserves the alignment. jit_prolog() does *not* automatically ensure that the stack is 16-byte aligned. * The i386 support has been hacked to support x86_64. The x86_64 support has many limitations, such as allowing no more than 3 function arguments. * "core-common.h" adds a `jit_code' field into the `x' union, instead of taking the address of `pc' and casting it to a `jit_code*', because the latter violates C99 aliasing rules. * Fixed update of `prev_page' and `prev_length' in "funcs.h" for x86 (thanks to Ray Racine), and to call mprotect() based on whether `MZ_JIT_USE_MPROTECT' (instead iof `linux') is #defined. * The FP operations use unordered comparison, and an "anti" set of operations inverts the jump (without inverting the arguments). On x86, there are aso _fppush variants that ignore the provided registers and work in terms of the FP stack, instead. ---------------------------------------- GNU Lightning authors: Paolo Bonzini <bonzini@gnu.org> i386 and PPC assemblers by Ian Piumarta <piumarta@inria.fr> Major PPC contributions by Laurent Michel <ldm@thorgal.homelinux.org> ---------------------------------------- Bugs fixed since 1.2: * PPC jit_ldxi_* checked register instead of immediate for whether it fits in 16 bits