diff options
| author | Paul Eggert <eggert@cs.ucla.edu> | 2016-12-23 21:13:58 -0800 |
|---|---|---|
| committer | Paul Eggert <eggert@cs.ucla.edu> | 2016-12-23 21:46:53 -0800 |
| commit | a815e5f19581344af5e143636039064a7fbe83ed (patch) | |
| tree | f5ed9c34657f1a86d85020d30826d07d9fa4d56b /src/lisp.h | |
| parent | a43cfb1ad55cad553d54798356c69e2496a3e504 (diff) | |
| download | emacs-a815e5f19581344af5e143636039064a7fbe83ed.tar.gz | |
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.
* src/thread.c (unmark_threads): Remove. All uses removed.
* src/thread.h (struct thread_state): Remove m_byte_stack_list member.
All uses removed. m_stack_bottom is now the first non-Lisp field.
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/src/lisp.h b/src/lisp.h index 79b208a333b..75a7fd3d53d 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -3282,7 +3282,6 @@ struct handler ptrdiff_t pdlcount; int poll_suppress_count; int interrupt_input_blocked; - struct byte_stack *byte_stack; }; extern Lisp_Object memory_signal_data; @@ -4330,7 +4329,6 @@ extern int read_bytecode_char (bool); /* Defined in bytecode.c. */ extern void syms_of_bytecode (void); -extern void relocate_byte_stack (struct byte_stack *); extern Lisp_Object exec_byte_code (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, ptrdiff_t, Lisp_Object *); extern Lisp_Object get_byte_code_arity (Lisp_Object); |
