1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-30 12:21:25 -08:00
emacs/doc/lispref
Paul Eggert d614e4a8cd Turn misc objects into pseudovectors
Eliminate the category of miscellaneous objects, and turn all
such objects into pseudovectors.  The immediate motivation
for this change is to free up an enum Lisp_Type tag value, a
scarce resource that can be better used elsewhere.  However,
this change is worthwhile in its own right, as it improves
performance slightly on my platform, 0.3% faster for 'make
compile-always' on Fedora 28, and it simplifies the garbage
collector and interpreter (Bug#32405).
* doc/lispref/internals.texi (Garbage Collection):
* etc/NEWS:
Document change to garbage-collect return value.
* src/alloc.c (total_markers, total_free_markers):
(union aligned_Lisp_Misc, MARKER_BLOCK_SIZE)
(struct marker_block, marker_block, marker_block_index)
(misc_free_list, allocate_misc, live_misc_holding)
(live_misc_p, sweep_misc):
* src/lisp.h (lisp_h_MARKERP, lisp_h_MISCP, MARKERP, MISCP)
(Lisp_Misc, enum Lisp_Misc_Type, Lisp_Misc_Free)
(Lisp_Misc_Marker, Lisp_Misc_Overlay, Lisp_Misc_Finalizer)
(Lisp_Misc_Ptr, Lisp_Misc_User_Ptr, Lisp_Misc_Limit)
(Lisp_Misc_Bignum)
(XSETMISC, struct Lisp_Misc_Any, XMISCANY, XMISCTYPE)
(struct Lisp_Free, union Lisp_Misc, XMISC):
Remove.  All uses removed.
(cleanup_vector): Clean up objects that were formerly misc
and are now pseudovectors.
(make_misc_ptr, build_overlay, Fmake_marker, build_marker)
(make_bignum_str, make_number, make_pure_bignum)
(make_user_ptr, Fmake_finalizer):
Build as pseudovectors, not as misc objects.
(mark_finalizer_list, queue_doomed_finalizers)
(compact_undo_list, mark_overlay, mark_object)
(unchain_dead_markers):
Mark as vector-like objects, not as misc objects.
(mark_maybe_object, mark_maybe_pointer, valid_lisp_object_p)
(total_bytes_of_live_objects, survives_gc_p):
* src/fns.c (sxhash):
No need to worry about misc objects.
(garbage_collect_1): Do not generate a 'misc' component.
(syms_of_alloc): No need for 'misc' symbol.
* src/buffer.c (overlays_at, overlays_in, overlay_touches_p)
(overlay_strings, recenter_overlay_lists)
(fix_start_end_in_overlays, fix_overlays_before)
(Foverlay_lists, report_overlay_modification)
(evaporate_overlays):
* src/editfns.c (overlays_around):
* src/data.c (Ftype_of):
* src/fns.c (internal_equal):
* src/lisp.h (mint_ptrp, xmint_pointer, FINALIZERP)
(XFINALIZER, MARKERP, XMARKER, OVERLAYP, XOVERLAY, USER_PTRP)
(XUSER_PTR, BIGNUMP, XBIGNUM):
* src/print.c (print_vectorlike, print_object):
* src/undo.c (record_marker_adjustments):
* src/xdisp.c (load_overlay_strings):
Formerly misc objects are now pseudovectors.
* src/lisp.h (PVEC_MARKER, PVEC_OVERLAY, PVEC_FINALIZER)
(PVEC_BIGNUM, PVEC_MISC_PTR, PVEC_USER_PTR):
New constants, replacing their misc versions.  All uses changed.
(struct Lisp_Marker, struct Lisp_Overlay, struct Lisp_Misc_Ptr)
(struct Lisp_Bignum, struct Lisp_User_Ptr, struct Lisp_Finalizer):
Make usable as a pseudovector by using a pseudovector header,
replacing any DIY components, and putting Lisp_Object members
first.  All uses changed.
2018-08-11 18:50:25 -07:00
..
abbrevs.texi Update copyright year to 2018 2018-01-01 00:57:59 -08:00
anti.texi * doc/lispref/anti.texi (Antinews): Fix grammar. 2018-03-22 20:40:02 +01:00
back.texi Update copyright year to 2018 2018-01-01 00:57:59 -08:00
backups.texi Yet another round of improvements in the manual 2018-02-07 22:24:13 +02:00
book-spine.texi Fix single-quoting style in PDF manuals 2015-05-01 12:06:38 -07:00
buffers.texi Merge from origin/emacs-26 2018-06-02 10:29:38 -07:00
ChangeLog.1 Update copyright year to 2018 2018-01-01 00:57:59 -08:00
commands.texi Use @key{} where it is missing in the manuals 2018-01-31 19:59:12 +01:00
compile.texi ; * doc/lispref/compile.texi (Compilation Functions): Fix wording. 2018-04-02 20:25:52 +03:00
control.texi Allow floats as 'pcase' QPATS 2018-06-17 15:22:30 +02:00
customize.texi Improve indexing of 'eval-defun' in ELisp manual 2018-07-07 11:37:43 +03:00
debugging.texi Fix some documentation formatting nits 2018-08-03 08:54:08 -07:00
display.texi Merge from origin/emacs-26 2018-08-10 11:28:40 -07:00
doclicense.texi Merge from Gnulib 2017-10-01 18:31:10 -07:00
edebug.texi Fix some documentation formatting nits 2018-08-03 08:54:08 -07:00
elisp.texi Merge from origin/emacs-26 2018-05-29 10:07:21 +02:00
errors.texi Fix typos in several manuals (Bug#31610) 2018-06-01 16:33:58 +03:00
eval.texi Merge from origin/emacs-26 2018-07-28 07:50:36 -07:00
files.texi New commands to create an empty file 2018-08-02 13:20:46 +09:00
frames.texi Merge from origin/emacs-26 2018-07-28 07:50:36 -07:00
functions.texi Merge from origin/emacs-26 2018-06-23 07:51:00 -07:00
gpl.texi Merge from Gnulib 2017-10-01 18:31:10 -07:00
hash.texi ; * doc/lispref/hash.texi (Defining Hash): Fix typos. 2018-05-21 21:08:39 +03:00
help.texi Improve documentation of 'with-help-window' 2018-03-20 14:19:14 +02:00
hooks.texi ; Assorted documentation fixes in recent changes 2018-06-12 19:26:44 +03:00
index.texi Fix minor whitespace issues after "." in manual. 2012-12-05 14:27:56 -08:00
internals.texi Turn misc objects into pseudovectors 2018-08-11 18:50:25 -07:00
intro.texi Update copyright year to 2018 2018-01-01 00:57:59 -08:00
keymaps.texi Further improvements on manuals 2018-03-01 09:25:55 +01:00
lay-flat.texi Update copyright year to 2018 2018-01-01 00:57:59 -08:00
lists.texi Merge from origin/emacs-26 2018-07-13 09:28:15 -07:00
loading.texi Merge from origin/emacs-26 2018-01-30 07:50:25 -08:00
macros.texi Update copyright year to 2018 2018-01-01 00:57:59 -08:00
Makefile.in Update copyright year to 2018 2018-01-01 00:57:59 -08:00
maps.texi Fix some issues in the emacs/lispref manuals 2018-01-28 19:27:39 +01:00
markers.texi Update copyright year to 2018 2018-01-01 00:57:59 -08:00
minibuf.texi Prefer ?* to hide passwords 2018-07-29 21:21:40 +09:00
modes.texi Document 'major-mode-suspend' and 'major-mode-restore' 2018-06-22 11:48:38 +03:00
nonascii.texi Update Unicode data files to version 11.0.0 of Unicode 2018-06-09 15:41:21 +03:00
numbers.texi Merge remote-tracking branch 'origin/master' into feature/bignum 2018-08-09 17:56:53 -06:00
objects.texi Document bignums 2018-07-12 22:12:48 -06:00
os.texi Merge from origin/emacs-26 2018-05-23 01:37:54 -07:00
package.texi * lisp/emacs-lisp/package.el: New quickstart feature 2018-03-26 09:41:30 -04:00
positions.texi Fix typos and minor wording issues in ELisp manual 2018-04-13 16:44:05 +03:00
processes.texi Improve documentation of a recent change 2018-06-20 18:39:41 +03:00
README Update copyright year to 2018 2018-01-01 00:57:59 -08:00
records.texi Update copyright year to 2018 2018-01-01 00:57:59 -08:00
searching.texi Merge from origin/emacs-26 2018-05-25 09:45:34 -07:00
sequences.texi Merge from origin/emacs-26 2018-07-20 10:00:32 -07:00
spellfile Prefer typical American spelling for "acknowledgment". 2012-07-24 22:48:19 -07:00
streams.texi Honor print-charset-text-property value of nil (Bug#31376) 2018-05-23 07:53:58 -04:00
strings.texi %o and %x can now format signed integers 2018-07-26 00:39:17 -07:00
symbols.texi Update copyright year to 2018 2018-01-01 00:57:59 -08:00
syntax.texi Improve documentation of comment styles 2018-06-02 14:01:18 +03:00
text.texi * doc/lispref/text.texi (JSONRPC): Add missing menu. 2018-06-30 18:51:35 -07:00
threads.texi thread-join returns the result of finished thread 2018-07-22 11:53:24 +02:00
tips.texi Fix use of @key in Texinfo manuals 2018-04-19 12:21:06 +03:00
two-volume-cross-refs.txt Update copyright year to 2018 2018-01-01 00:57:59 -08:00
two-volume.make Update copyright year to 2018 2018-01-01 00:57:59 -08:00
variables.texi Improve indexing of 'eval-defun' in ELisp manual 2018-07-07 11:37:43 +03:00
windows.texi Keep interactive uses of 'recenter' backward compatible (Bug#31325) 2018-07-07 12:07:47 +03:00

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Copyright (C) 2001-2018 Free Software Foundation, Inc.  -*- outline -*-
See the end of the file for license conditions.


README for the Emacs Lisp Reference Manual.

* This directory contains the texinfo source files for the Emacs Lisp
Reference Manual.

* Report bugs in the Lisp Manual (or in Emacs) using M-x report-emacs-bug.
To ask questions, use the help-gnu-emacs mailing list.

* The Emacs Lisp Reference Manual is quite large.  It totals around
1100 pages in smallbook format; the info files total around 3.0 megabytes.

* You can format this manual for Info, for printing hardcopy using TeX,
or for HTML.

* You can buy nicely printed copies from the Free Software Foundation.
Buying a manual from the Free Software Foundation helps support our GNU
development work.  See <https://shop.fsf.org/>.
(At time of writing, this manual is out of print.)

* The master file for formatting this manual for Tex is called 'elisp.texi'.
It contains @include commands to include all the chapters that make up
the manual.

* This distribution contains a Makefile that you can use with GNU Make.

** To make an Info file, you need to install Texinfo, then run 'make info'.

** Use 'make elisp.pdf' or 'make elisp.html' to create PDF or HTML versions.


This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.