
This variant of GNU Lightning version 1.2 is modified for Racket in
many ways, including the following:

 * 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.

 * For i386 and x86_64, "tiny" and "short" (on x86_64) jumps are
   supported, along the lines of supporting long jumps on PowerPC.

 * "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.

 * The ARM support was backported from Paulo César Pereira de
   Andrade's original (pre-lightning-2.0) implementation. The register
   assignment was changed, jump-length modes added, and so on. The
   instruction-set choices are made statically based on pre-processor
   definitions.

----------------------------------------

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>
 ARM assembler by Paulo César Pereira de Andrade

----------------------------------------

Bugs fixed since 1.2:

 * PPC jit_ldxi_* checked register instead of immediate for whether it
   fits in 16 bits
