[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 7c16392 1/7: Fix GC-related commentary
From: |
Paul Eggert |
Subject: |
[Emacs-diffs] master 7c16392 1/7: Fix GC-related commentary |
Date: |
Thu, 7 Jun 2018 22:11:56 -0400 (EDT) |
branch: master
commit 7c16392ccae50fe09ca3cbb11cc2cd59e5c376cc
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>
Fix GC-related commentary
* src/lisp.h: USE_STACK_LISP_OBJECTS is no longer experimental.
Also, remove confusion about scope vs lifetime.
And say that stack-allocated strings should not be given
text properties.
---
src/lisp.h | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/lisp.h b/src/lisp.h
index ee2e72d..c5af4fa 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -228,7 +228,7 @@ extern bool suppress_checking EXTERNALLY_VISIBLE;
USE_LSB_TAG not only requires the least 3 bits of pointers returned by
malloc to be 0 but also needs to be able to impose a mult-of-8 alignment
- on the few static Lisp_Objects used, all of which are aligned via
+ on some non-GC Lisp_Objects, all of which are aligned via
'char alignas (GCALIGNMENT) gcaligned;' inside a union. */
enum Lisp_Bits
@@ -4680,13 +4680,14 @@ extern void *record_xmalloc (size_t)
ATTRIBUTE_ALLOC_SIZE ((1));
#define SAFE_ALLOCA_LISP(buf, nelt) SAFE_ALLOCA_LISP_EXTRA (buf, nelt, 0)
-/* If USE_STACK_LISP_OBJECTS, define macros that and functions that allocate
- block-scoped conses and strings. These objects are not
- managed by the garbage collector, so they are dangerous: passing them
- out of their scope (e.g., to user code) results in undefined behavior.
- Conversely, they have better performance because GC is not involved.
+/* If USE_STACK_LISP_OBJECTS, define macros and functions that
+ allocate some Lisp objects on the C stack. As the storage is not
+ managed by the garbage collector, these objects are dangerous:
+ passing them to user code could result in undefined behavior if the
+ objects are in use after the C function returns. Conversely, these
+ objects have better performance because GC is not involved.
- This feature is experimental and requires careful debugging.
+ While debugging you may want to disable allocation on the C stack.
Build with CPPFLAGS='-DUSE_STACK_LISP_OBJECTS=0' to disable it. */
#if (!defined USE_STACK_LISP_OBJECTS \
@@ -4751,7 +4752,8 @@ enum
Take its unibyte value from the null-terminated string STR,
an expression that should not have side effects.
STR's value is not necessarily copied. The resulting Lisp string
- should not be modified or made visible to user code. */
+ should not be modified or given text properties or made visible to
+ user code. */
#define AUTO_STRING(name, str) \
AUTO_STRING_WITH_LEN (name, str, strlen (str))
@@ -4760,7 +4762,8 @@ enum
Take its unibyte value from the null-terminated string STR with length LEN.
STR may have side effects and may contain null bytes.
STR's value is not necessarily copied. The resulting Lisp string
- should not be modified or made visible to user code. */
+ should not be modified or given text properties or made visible to
+ user code. */
#define AUTO_STRING_WITH_LEN(name, str, len) \
Lisp_Object name = \
- [Emacs-diffs] master updated (9966842 -> e2a9800), Paul Eggert, 2018/06/07
- [Emacs-diffs] master 4d176b7 3/7: Fix ftfont_open2 failure cleanup, Paul Eggert, 2018/06/07
- [Emacs-diffs] master 7c16392 1/7: Fix GC-related commentary,
Paul Eggert <=
- [Emacs-diffs] master b76389f 2/7: Don’t over-align if WIDE_EMACS_INT, Paul Eggert, 2018/06/07
- [Emacs-diffs] master a064128 4/7: * src/.gdbinit: Omit soon-obsolete comment., Paul Eggert, 2018/06/07
- [Emacs-diffs] master e2a9800 7/7: Fit kill_buffer_xwidgets into 80, Paul Eggert, 2018/06/07
- [Emacs-diffs] master a0aa1d4 5/7: New function record_unwind_protect_excursion, Paul Eggert, 2018/06/07
- [Emacs-diffs] master 0e1bfd3 6/7: Minor cleanup of save_excursion_restore, Paul Eggert, 2018/06/07