summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2022-02-16 16:52:07 +0100
committerMattias EngdegÄrd <mattiase@acm.org>2022-03-12 17:32:31 +0100
commit213483124b4381663efd0dd001037363223ce188 (patch)
treef7b355d3c0c56d6cd417e043a842e2ae91c8f113 /src/eval.c
parent6ef9dc7797729a547dace431f57a73fe278172cc (diff)
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.c36
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