| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
|
|
|
|
| |
* src/alloc.c (make-byte-code):
* src/bytecode-jit.c (jit_byte_code__):
* src/bytecode.c [HAVE_LIBJIT] (exec_byte_code):
* src/eval.c (funcall_lambda):
* src/lisp.h (funcall_lambda): Store pointer to bytecode execution function
(either `exec_byte_code' or `jit_exec') in Lisp_Compiled objects to avoid
the need for an extra function call in `exec_byte_code'.
|
| |
|
|
|
|
| |
* src/bytecode-jit.c (jit_byte_code__, jit_exec):
* src/alloc.c (cleanup_vector, mark_compiled): Add vector slot for
holding the generated closure so that it only has to be generated once.
|
| |
|
|
|
|
|
| |
; * src/bytecode-jit.c: Make `functions' array static const to allow the
compiler to elide the array accesses. This brings `jit_byte_code__'
performance back in line with the more explicit, repetitive
pre-639dfad3ae2a478652a399986b03e5eec219eab1 version.
|
| |
|
|
|
|
| |
; * src/bytecode-jit.c (jit_byte_code__, jit_exec): Use the
COMPILED_JIT_ID field for storing the jit_function_t value so that
we can retrive the jit_context_t later for destruction.
|
| |
|
|
|
|
|
| |
; * src/bytecode-jit.c (jit_byte_code__): Condense cases using
JIT_CALL_STACK_N and JIT_CALL_STACK_MANY.
; * src/bytecode.h: Define function called and number of stack items for
each bytecode instruction.
|
| | |
|
| |
|
|
|
| |
; * src/bytecode-jit.c (jit_byte_code__, jit_exec): Add emacs_jit_context
struct to hold common signatures and such.
|
| | |
|
| |
|
|
|
|
| |
* src/bytecode-jit.c (jit_inc, jit_push, jit_top, jit_pop, jit_call)
(jit_call_vaarg, jit_call_with_stack_n, jit_call_with_stack_many)
(jit_byte_code__): Create inline functions to clean up macro messiness.
|
| |
|
|
|
|
|
|
| |
* src/bytecode-jit.c (jit_byte_code__, jit_exec): Insert entry into
`byte_stack_list' from `jit_exec' instead of `jit_byte_code__'. It seems like
this would be needed for proper stack unwinding in `unwind_to_catch'.
* src/bytecode.c (relocate_byte_stack) [HAVE_LIBJIT]: Skip entries in
`byte_stack_list' with no associated bytecode stack.
|
| | |
|
| |
|
|
|
|
|
|
| |
; * src/bytecode-jit.c:
; * src/bytecode.c:
; * src/bytecode.h:
; * src/emacs.c:
; * src/lisp.h: Add guards around all JIT-related code.
|
| |
|
|
|
|
|
|
|
|
| |
; * src/bytecode.c (exec_byte_code, exec_byte_code__): Use exec_byte_code as
the single entrypoint for both the interpreter and JIT compiler.
; * src/bytecode-jit.c (jit_byte_code): Remove jit_byte_code to be replaced
by exec_byte_code.
; * src/bytecode.h: Add function prototypes.
; * src/eval.c (funcall_lambda): Use exec_byte_code instead of jit_byte_code.
; * src/lisp.h: Update function prototypes.
|
| | |
|
| | |
|
| |
|
|
|
| |
; * src/bytecode-jit.c (jit_byte_code__): Set highest optimization level when
compiling functions.
|
|
|
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.
|