This change adds several functions that utilize GNU libjit to compile
byte-compiled lisp functions to machine code. The functionality is exposed
in two ways: specific functions can be JIT compiled from lisp with the
`jit-compile' function, or JIT compilation can be enabled globally by setting
`byte-code-jit-on' to non-nil. Once the function has been JIT compiled, the
machine-code version will be executed in place of the bytecode version.
* src/bytecode-jit.c (native_varref, native_ifnil, native_ifnonnil)
(native_car, native_eq, native_memq, native_cdr, native_varset)
(native_unbind_to, byte_code_quit, native_save_excursion)
(native_save_restriction, native_save_window_excursion, native_catch)
(native_pophandler, native_pushhandler1, native_pushhandler2)
(native_unwind_protect, native_temp_output_buffer_setup, native_nth)
(native_symbolp, native_consp, native_stringp, native_listp, native_not)
(native_add1, native_eqlsign, native_negate, native_point, native_point_max)
(native_point_min, native_current_column, native_interactive_p)
(native_char_syntax, native_elt, native_car_safe, native_cdr_safe)
(native_number_p, native_integer_p, emacs_jit_init, jit_exec, jit_byte_code__)
(jit_byte_code, Fjit_compile, syms_of_bytecode_jit): New file encapsulating
JIT compilation functionality and execution functionality.
* src/bytecode.c:
* src/bytecode.h: Extract useful data structures and macro definitions into a
separate header to allow sharing between src/bytecode{,-jit}.c.
; * src/Makefile.in: Add src/bytecode-jit.o to Makefile recipe.
; * src/lisp.h: Add function prototypes for new JIT functions.
; * src/emacs.c: Call syms_of_bytecode_jit to initialize JIT-related symbols.