diff options
author | Mattias EngdegÄrd <mattiase@acm.org> | 2022-02-16 16:52:07 +0100 |
---|---|---|
committer | Mattias EngdegÄrd <mattiase@acm.org> | 2022-03-12 17:32:31 +0100 |
commit | 213483124b4381663efd0dd001037363223ce188 (patch) | |
tree | f7b355d3c0c56d6cd417e043a842e2ae91c8f113 /src/eval.c | |
parent | 6ef9dc7797729a547dace431f57a73fe278172cc (diff) | |
download | emacs-213483124b4381663efd0dd001037363223ce188.tar.gz emacs-213483124b4381663efd0dd001037363223ce188.tar.bz2 emacs-213483124b4381663efd0dd001037363223ce188.zip |
Inline record_in_backtrace
It's critical in several function call paths.
* src/eval.c (grow_specpdl_allocation): Make non-static.
(grow_specpdl, record_in_backtrace): Move from here...
* src/lisp.h (grow_specpdl, record_in_backtrace): ... to here,
and declare inline.
Diffstat (limited to 'src/eval.c')
-rw-r--r-- | src/eval.c | 36 |
1 files changed, 1 insertions, 35 deletions
diff --git a/src/eval.c b/src/eval.c index 294d79e67a0..0fc492fbe0e 100644 --- a/src/eval.c +++ b/src/eval.c @@ -2320,7 +2320,7 @@ alist mapping symbols to their value. */) return unbind_to (count, eval_sub (form)); } -static void +void grow_specpdl_allocation (void) { eassert (specpdl_ptr == specpdl + specpdl_size); @@ -2342,40 +2342,6 @@ grow_specpdl_allocation (void) specpdl_ptr = specpdl_ref_to_ptr (count); } -/* Grow the specpdl stack by one entry. - The caller should have already initialized the entry. - Signal an error on stack overflow. - - Make sure that there is always one unused entry past the top of the - stack, so that the just-initialized entry is safely unwound if - memory exhausted and an error is signaled here. Also, allocate a - never-used entry just before the bottom of the stack; sometimes its - address is taken. */ - -INLINE void -grow_specpdl (void) -{ - specpdl_ptr++; - if (specpdl_ptr == specpdl + specpdl_size) - grow_specpdl_allocation (); -} - -specpdl_ref -record_in_backtrace (Lisp_Object function, Lisp_Object *args, ptrdiff_t nargs) -{ - specpdl_ref count = SPECPDL_INDEX (); - - eassert (nargs >= UNEVALLED); - specpdl_ptr->bt.kind = SPECPDL_BACKTRACE; - specpdl_ptr->bt.debug_on_exit = false; - specpdl_ptr->bt.function = function; - current_thread->stack_top = specpdl_ptr->bt.args = args; - specpdl_ptr->bt.nargs = nargs; - grow_specpdl (); - - return count; -} - /* Eval a sub-expression of the current expression (i.e. in the same lexical scope). */ Lisp_Object |