Commit graph

3 commits

Author SHA1 Message Date
joerg
3ff4763711 Fix GCC 3.4+: Don't clobber %ebx on IA32. 2006-01-09 19:00:43 +00:00
rillig
91c0b4fe16 Updated libjit to 0.0.4.
Changes:
	* Pluggable object models.
	* Problems with "gen-apply" on Win32 systems.
	* Optimize "if true goto" into "goto".
	* Peephole optimization on branches.
	* Adjust ARM codegen macros to support branch elimination instructions.
	* Redesign exception handling to use "setjmp" everywhere.
	* Remove C++ code from "libjit.so" so that it is a pure C library.
	* Use computed goto's in the interpreter if the compiler supports them.
	* Don't allow conditional branches to jump out of exception contexts.
	* Block movement to allow initialization code to be moved to the start
	  of a function, or loop condition code to be moved to the end.
	* Rewrite the exception region routines to make them easier to use.
	* Add the "gen-sel" program, for creating instruction selectors.
	* Write instruction selectors for x86 and ARM (only x86 is enabled).
	* Portability fixes for ARM, PPC, Alpha, IA64, and amd64.
	* Clarify the description of LLVM, at the request of LLVM's author.
	* Deferred argument popping after function calls.
	* Add "--enable-interpreter" to force the interpreter to be used.
	* Implement a simple global register allocator based on usage counts.
	* Recognise increment and decrement idioms.
	* Align cache flushes properly (Miroslaw Dobrzanski-Neumann).
	* Querying of x86 cpuid where necessary.
	* Add a constant pool for ARM, to make constant loads more efficient.
	* Handle register pairs for 64-bit values properly.
	* Support for parameter areas on the stack, to reduce push/pop overhead.
	* Avoid unnecessary register spills if a value won't be used again.
	* Implement tail calls from a function to itself.
	* Optimize x86 prologs and epilogs to avoid doing unnecessry work.
	* Centralise the code that handles parameter passing.
	* Support for parallel builds.
2005-10-22 15:51:02 +00:00
xtraeme
d3c85a060e Initial import of libjit-0.0.2.
The libjit library 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 proprietry 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.
2004-05-16 01:12:14 +00:00