diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2017-12-12 12:59:57 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2017-12-12 15:17:12 -0800 |
commit | 244346c744a6700d320a0a0fe8c796be3b3ff023 (patch) | |
tree | 145dc0ba87fcf82de44e62ecbdeb70fe86c28c7a /etc/DEBUG | |
parent | c705f7250d6f17f1682ee5ad7eec516dbf6c3916 (diff) | |
download | emacs-244346c744a6700d320a0a0fe8c796be3b3ff023.tar.gz |
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/DEBUG | 7 |
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 the *gud-emacs* buffer and press RET. Many variables you will encounter while debugging are Lisp objects. -These are displayed as integer values (or structures, if you used the -"--enable-check-lisp-object-type" option at configure time) that are -hard to interpret, especially if they represent long lists. You can +These are normally displayed as opaque pointers or integers that are +hard to interpret, especially if they represent long lists. +(They are instead displayed as structures containing these opaque +values, if --enable-check-lisp-object-type is in effect.) You can use the 'pp' command to display them in their Lisp form. That command displays its output on the standard error stream, which you can redirect to a file using "M-x redirect-debugging-output". |