aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorPaul Eggert2016-08-09 00:37:40 -0700
committerPaul Eggert2016-08-09 01:31:22 -0700
commit644fc17b9ae181174a842e3876e887666d505666 (patch)
tree25fd8d1b3e1a32753d3db759d0909acbc2b12e77 /src/alloc.c
parentcb71a119f7231984e010cc28ef33854721036a0f (diff)
downloademacs-644fc17b9ae181174a842e3876e887666d505666.tar.gz
emacs-644fc17b9ae181174a842e3876e887666d505666.zip
Remove interpreter’s byte stack
This improves performance overall on my benchmark on x86-64, since the interpreted program-counter resides in a machine register rather than in RAM. * etc/DEBUG, src/.gdbinit: Remove xbytecode GDB command, as there is no longer a byte stack to decode. * src/bytecode.c (struct byte_stack, byte_stack_list) (relocate_byte_stack): Remove. All uses removed. (FETCH): Simplify now that pc is now local (typically, in a register) and no longer needs to be relocated. (CHECK_RANGE): Remove. All uses now done inline, in a different way. (BYTE_CODE_QUIT): Remove; now done by op_relative_branch. (exec_byte_code): Allocate a copy of the function’s bytecode, so that there is no problem if GC moves it. * src/lisp.h (struct handler): Remove byte_stack member. All uses removed. (SAFE_ALLOCA_LISP_EXTRA): New macro, a generalization of SAFE_ALLOCA_LISP. (SAFE_ALLOCA_LISP): Use it.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/src/alloc.c b/src/alloc.c
index e25d91ff8aa..db165757e19 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -5799,8 +5799,6 @@ garbage_collect_1 (void *end)
5799 5799
5800 gc_sweep (); 5800 gc_sweep ();
5801 5801
5802 relocate_byte_stack ();
5803
5804 /* Clear the mark bits that we set in certain root slots. */ 5802 /* Clear the mark bits that we set in certain root slots. */
5805 VECTOR_UNMARK (&buffer_defaults); 5803 VECTOR_UNMARK (&buffer_defaults);
5806 VECTOR_UNMARK (&buffer_local_symbols); 5804 VECTOR_UNMARK (&buffer_local_symbols);