aboutsummaryrefslogtreecommitdiffstats
path: root/etc/DEBUG
diff options
context:
space:
mode:
authorPaul Eggert2017-12-12 12:59:57 -0800
committerPaul Eggert2017-12-12 15:17:12 -0800
commit244346c744a6700d320a0a0fe8c796be3b3ff023 (patch)
tree145dc0ba87fcf82de44e62ecbdeb70fe86c28c7a /etc/DEBUG
parentc705f7250d6f17f1682ee5ad7eec516dbf6c3916 (diff)
downloademacs-244346c744a6700d320a0a0fe8c796be3b3ff023.tar.gz
emacs-244346c744a6700d320a0a0fe8c796be3b3ff023.zip
Reimplement Lisp_Object as pointer-to-incomplete
This makes Lisp_Object values opaque pointers instead of integers, which helps avoid the same sort of typos that CHECK_LISP_OBJECT_TYPE helps to avoid, without having to wrap pointers inside structures. This also looks forward to supporting -fcheck-pointer-bounds. * etc/DEBUG: * src/.gdbinit (Lisp_Object_Printer.to_string): Lisp_Object can be a pointer type now. * src/alloc.c (macro_XPNTR, XPNTR): * src/emacs-module.c (value_to_lisp_bits, lisp_to_value_bits): * src/lisp.h (lisp_h_XLI, lisp_h_XIL): (lisp_h_XUNTAG) [USE_LSB_TAG]: (XUNTAG) [!USE_LSB_TAG]: (Lisp_Object, TAG_PTR, make_lisp_symbol): Support new Lisp_Object implementation as a pointer to an incomplete type. Keep pointers pointers, as much as possible. * src/alloc.c (macro_XPNTR_OR_SYMBOL_OFFSET, XPNTR_OR_SYMBOL_OFFSET): Remove. All uses replaced by plain XPNTR. * src/emacs-module.c: Work around GCC bug 83162. * src/lisp.h (LISP_WORDS_ARE_POINTERS, lisp_h_XLP, lisp_h_XPL): (XLP, XPL) [DEFINE_KEY_OPS_AS_MACROS]: New macros. (Lisp_Word, untagged_ptr, Lisp_Word_tag): New types. (XLP, XPL): New inline functions. (TAG_PTR): Now expands to an initializer, not an expression. All uses changed. (TAG_SYMOFFSET, XLI_BUILTIN_LISPSYM): Remove. All uses removed. (LISPSYM_INITIALLY): Redo in terms of the new TAG_PTR. (NIL_IS_ZERO): Redo without XLI_BUILTIN_LISPSYM. * src/xwidget.c (webkit_javascript_finished_cb): Use XPL instead of XIL with a non-EMACS_INT arg. (Fxwidget_webkit_execute_script): Use XLP instead of XLI followed by two conversions.
Diffstat (limited to 'etc/DEBUG')
-rw-r--r--etc/DEBUG7
1 files changed, 4 insertions, 3 deletions
diff --git a/etc/DEBUG b/etc/DEBUG
index f5efbe0ff9a..9fa6ac1d11c 100644
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -140,9 +140,10 @@ If you attached the debugger to a running Emacs, type "continue" into
140the *gud-emacs* buffer and press RET. 140the *gud-emacs* buffer and press RET.
141 141
142Many variables you will encounter while debugging are Lisp objects. 142Many variables you will encounter while debugging are Lisp objects.
143These are displayed as integer values (or structures, if you used the 143These are normally displayed as opaque pointers or integers that are
144"--enable-check-lisp-object-type" option at configure time) that are 144hard to interpret, especially if they represent long lists.
145hard to interpret, especially if they represent long lists. You can 145(They are instead displayed as structures containing these opaque
146values, if --enable-check-lisp-object-type is in effect.) You can
146use the 'pp' command to display them in their Lisp form. That command 147use the 'pp' command to display them in their Lisp form. That command
147displays its output on the standard error stream, which you 148displays its output on the standard error stream, which you
148can redirect to a file using "M-x redirect-debugging-output". 149can redirect to a file using "M-x redirect-debugging-output".