aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorZach Shaftel2020-06-18 01:09:31 -0400
committerZach Shaftel2020-06-18 01:09:31 -0400
commite1aee0ffe8aa51a8963737f8a957cf19eabdb9d7 (patch)
treebe1ff734ed32fa702c4cd88adfabca389e1a1bc6 /src/lisp.h
parent3d5ac37d36ecae90a634515b78608062fc9729be (diff)
downloademacs-feature/zach-soc-funcall-from-bytecode.tar.gz
emacs-feature/zach-soc-funcall-from-bytecode.zip
Don't call Ffuncall directly from exec_byte_codefeature/zach-soc-funcall-from-bytecode
* src/bytecode.c (exec_byte_code): Do a good chunk of Ffuncall's work in the Bcall ops, so Ffuncall no longer needs to be called. As it stands, it's an ugly clone of the contents of Ffuncall (and some of funcall_lambda). Work in progress. * src/eval.c (record_in_backtrace_with_offset): New function. Like record_in_backtrace but accepts the bytecode offset and stores it in the pertinent backtrace frame. (record_in_backtrace): Don't record the offset. (funcall_lambda): Remove unnecessary SYMBOLP check. * src/lisp.h (funcall_lambda, do_debug_on_call) (record_in_backtrace_with_offset , backtrace_debug_on_exit): Declare.
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lisp.h b/src/lisp.h
index ef6302a4670..e04e374ca97 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -4113,7 +4113,6 @@ extern Lisp_Object Vautoload_queue;
4113extern Lisp_Object Vrun_hooks; 4113extern Lisp_Object Vrun_hooks;
4114extern Lisp_Object Vsignaling_function; 4114extern Lisp_Object Vsignaling_function;
4115extern Lisp_Object inhibit_lisp_code; 4115extern Lisp_Object inhibit_lisp_code;
4116extern int backtrace_byte_offset;
4117 4116
4118/* To run a normal hook, use the appropriate function from the list below. 4117/* To run a normal hook, use the appropriate function from the list below.
4119 The calling convention: 4118 The calling convention:
@@ -4141,6 +4140,7 @@ extern AVOID signal_error (const char *, Lisp_Object);
4141extern AVOID overflow_error (void); 4140extern AVOID overflow_error (void);
4142extern bool FUNCTIONP (Lisp_Object); 4141extern bool FUNCTIONP (Lisp_Object);
4143extern Lisp_Object funcall_subr (struct Lisp_Subr *subr, ptrdiff_t numargs, Lisp_Object *arg_vector); 4142extern Lisp_Object funcall_subr (struct Lisp_Subr *subr, ptrdiff_t numargs, Lisp_Object *arg_vector);
4143extern Lisp_Object funcall_lambda (Lisp_Object, ptrdiff_t, Lisp_Object *);
4144extern Lisp_Object eval_sub (Lisp_Object form); 4144extern Lisp_Object eval_sub (Lisp_Object form);
4145extern Lisp_Object apply1 (Lisp_Object, Lisp_Object); 4145extern Lisp_Object apply1 (Lisp_Object, Lisp_Object);
4146extern Lisp_Object call0 (Lisp_Object); 4146extern Lisp_Object call0 (Lisp_Object);
@@ -4185,6 +4185,7 @@ extern Lisp_Object vformat_string (const char *, va_list)
4185 ATTRIBUTE_FORMAT_PRINTF (1, 0); 4185 ATTRIBUTE_FORMAT_PRINTF (1, 0);
4186extern void un_autoload (Lisp_Object); 4186extern void un_autoload (Lisp_Object);
4187extern Lisp_Object call_debugger (Lisp_Object arg); 4187extern Lisp_Object call_debugger (Lisp_Object arg);
4188extern void do_debug_on_call (Lisp_Object code, ptrdiff_t count);
4188extern void init_eval_once (void); 4189extern void init_eval_once (void);
4189extern Lisp_Object safe_call (ptrdiff_t, Lisp_Object, ...); 4190extern Lisp_Object safe_call (ptrdiff_t, Lisp_Object, ...);
4190extern Lisp_Object safe_call1 (Lisp_Object, Lisp_Object); 4191extern Lisp_Object safe_call1 (Lisp_Object, Lisp_Object);
@@ -4193,8 +4194,10 @@ extern void init_eval (void);
4193extern void syms_of_eval (void); 4194extern void syms_of_eval (void);
4194extern void prog_ignore (Lisp_Object); 4195extern void prog_ignore (Lisp_Object);
4195extern ptrdiff_t record_in_backtrace (Lisp_Object, Lisp_Object *, ptrdiff_t); 4196extern ptrdiff_t record_in_backtrace (Lisp_Object, Lisp_Object *, ptrdiff_t);
4197extern ptrdiff_t record_in_backtrace_with_offset (Lisp_Object, Lisp_Object *, ptrdiff_t, int);
4196extern void mark_specpdl (union specbinding *first, union specbinding *ptr); 4198extern void mark_specpdl (union specbinding *first, union specbinding *ptr);
4197extern void get_backtrace (Lisp_Object array); 4199extern void get_backtrace (Lisp_Object array);
4200extern bool backtrace_debug_on_exit (union specbinding *pdl);
4198Lisp_Object backtrace_top_function (void); 4201Lisp_Object backtrace_top_function (void);
4199extern bool let_shadows_buffer_binding_p (struct Lisp_Symbol *symbol); 4202extern bool let_shadows_buffer_binding_p (struct Lisp_Symbol *symbol);
4200 4203