Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
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