You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Aleksey Demakov 604d64b0b8
Merge pull request #22 from M4GNV5/cherry-misc
5 years ago
attic Add a special OP for retrieving the frame pointer 6 years ago
build-aux Use build-aux dir for autoconf files. 12 years ago
doc added documentation for `objmodel` extension 9 years ago
dpas Remove duplicate entries from .gitignore files. 12 years ago
include Include jit-dump.h and jit-memory.h from jit.h 5 years ago
jit add inversions of OP_BR_IFALSE and OP_BR_ITRUE to _jit_invert_condition 5 years ago
jitdynamic Don't use Win32 API on Cygwin 6 years ago
jitplus Add pkg-config .pc files 7 years ago
jitruby Update readmes 9 years ago
m4 Add the m4 dir to the tree. 12 years ago
samples Add a sample program that demonstrates a simple VM based 20 years ago
tests Check for functions that are documented but not declared 5 years ago
tools Fix out-of-tree builds 5 years ago
tutorial Remove duplicate entries from .gitignore files. 12 years ago
.gitignore Add pkg-config .pc files 7 years ago
AUTHORS Initial revision 21 years ago
COPYING update the COPYING file to the latest edition of GPLv2 (new FSF address and minor formatting changes) 17 years ago
COPYING.LESSER add LGPL v2.1 file 17 years ago
ChangeLog add inversions of OP_BR_IFALSE and OP_BR_ITRUE to _jit_invert_condition 5 years ago
Makefile.am Move ops files from the config to jit dir. 12 years ago
NEWS *** empty log message *** 16 years ago
README fix some typos 7 years ago
TODO Fix a typo 6 years ago
bootstrap Rename auto_gen.sh file to bootstrap 9 years ago
configure.ac Add tests/unit subdirectory 5 years ago

README


libjit
------

This library in this distribution implements Just-In-Time compilation
functionality. Unlike other JIT's, this one is designed to be independent
of any particular virtual machine bytecode format or language. The hope
is that Free Software projects can get a leg-up on proprietary VM vendors
by using this library rather than spending large amounts of time writing
their own JIT from scratch.

This JIT is also designed to be portable to multiple archictures.
If you run libjit on a machine for which a native code generator is
not yet available, then libjit will fall back to interpreting the code.
This way, you don't need to write your own interpreter for your
bytecode format if you don't want to.

The library is distributed under the terms of the GNU Lesser General
Public License. See the COPYING.LESSER file for details.

The documentation for libjit is in Texinfo format. A general overview
is in "doc/libjit.texi" with the remainder of the function documentation
in the source files themselves.

Building libjit
---------------

To build libjit from a release tarball you will need GNU make, Bison, and
Flex, and it is also highly recommended that you use gcc. To configure,
build, and install, you would do the following:

./configure
make
make install

To build libjit from the repository tree you will also need autotools:
autoconf, automake, and libtool. These tools let you create ./configure
script which is missing in the repository. To run autotools you would
just do the following:

./bootstrap


Compiler notes
--------------

It is highly recommended that you build libjit with gcc and not
some other C compiler, even if you plan to use some other C
compiler to access the library. We make use of a number of gcc
builtins to assist with stack walking, dynamic function calls,
and closures.

It is also recommended that you don't use the "-fomit-frame-pointer"
option when compiling programs that use libjit. Otherwise stack walking
may not work correctly, leading to problems when throwing exceptions.
The configure script for libjit will detect the presence of this
option in CFLAGS and remove it when building libjit itself.

Contacting the authors
----------------------

The primary author is Rhys Weatherley at Southern Storm Software, Pty Ltd.
He can be reached via e-mail at "rweather@southern-storm.com.au". [ This
address is probably not valid anymore. ]

A number of other authors have also contributed to libjit. The current
libjit maintainer is Aleksey Demakov <ademakov@gmail.com>.

Currently it is recommended to obtain libjit source tree from its Savannah
git repository:

git clone git://git.savannah.gnu.org/libjit.git

The latest released version of libjit is severely out of date and its use
is discuraged. Still it can be downloaded from here:

http://ftp.gnu.org/old-gnu/dotgnu/libjit/

Discussions about libjit can be carried out on the libjit mailing list,
"libjit@gnu.org". For details on how to subscribe to the list visit libjit
home page:

http://www.gnu.org/software/libjit/