Commit graph

42309 commits

Author SHA1 Message Date
Zach Shaftel
bed4004fd3 Clean up before patch submission
* src/lisp.h (struct handler): Remove unused 'bytecode_offset' field,
which was added at some point while prototyping.

* src/bytecode.c (UPDATE_OFFSET): Subtract 1, so the offset is accurate.
2020-07-22 20:07:15 -04:00
Zach Shaftel
54b94af19d Only store offset when executing bytecode
* src/eval.c (record_in_backtrace): Use 'backtrace_top' instead of
'backtrace_next', and check that 'backtrace_byte_offset' > 0 before
calling it, so the specbinding stack isn't scanned just to store an
invalid offset.
2020-07-22 19:55:15 -04:00
rocky
9a36861ef6 Reduced bytecode offset update
This reduces bytecode-offset updates to happen only before a call.
2020-07-13 11:50:35 -04:00
Zach Shaftel
0cb1df1edd Store the bytecode offset in thread_state
* src/lisp.h:
* src/eval.c (backtrace_byte_offset): Remove global variable, and
put it...

* src/thread.h (thread_state): ...in here as
m_backtrace_byte_offset, and define backtrace_byte_offset as a
macro that points to it.

* src/bytecode.c (UPDATE_OFFSET): Move out of #ifdef
BYTE_CODE_THREADED.
2020-06-26 20:05:16 -04:00
rocky
afa6a9733e Merge feature/zach-soc-bytecode-in-traceback 2020-06-26 19:40:11 -04:00
Eli Zaretskii
acba19e247 ; * src/composite.c (syms_of_composite): Fix last change. 2020-06-02 20:46:26 +03:00
Eli Zaretskii
22b2e9c901 Fix Arabic composition rules
* lisp/language/misc-lang.el (composition-function-table): Reorder
Arabic composition rules in descending order of lookback.

* src/composite.c (syms_of_composite): Document the order of rules
in 'composition-function-table'.
2020-06-02 20:44:59 +03:00
Paul Eggert
3973f68f59 Simplify and regularize some offset tests in alloc.c
* src/alloc.c (live_string_holding, live_cons_holding)
(live_symbol_holding, live_float_p): Simplify and regularize.
2020-06-01 22:42:01 -07:00
Paul Eggert
e10940f3f1 Merge from origin/emacs-27
0260d2d2db Don't call 'mbrtowc' on WINDOWSNT
2020-06-01 22:26:33 -07:00
Paul Eggert
e10bd9e249 Merge from origin/emacs-27
44c0e074f7 * doc/emacs/buffers.texi (Icomplete): Mention icomplete-mi...
68b6dad1d8 Be more aggressive in marking objects during GC
36f508f589 ; * src/xdisp.c (find_last_unchanged_at_beg_row): Fix a typo.
cc340da1fe Fix bug #41618 "(byte-compile 'foo) errors when foo is a m...
41232e6797 Avoid crashes due to bidi cache being reset during redisplay
f72bb4ce36 * lisp/tab-bar.el (switch-to-buffer-other-tab): Normalize ...
d3e0023aaa ; * etc/TODO: Fix formatting.  (Bug#41497)
a8ad94cd2f Fix mingw.org's MinGW GCC 9 warning about 'execve'

# Conflicts:
#	lisp/tab-bar.el
#	nt/inc/ms-w32.h
#	src/alloc.c
2020-06-01 22:26:32 -07:00
Eli Zaretskii
0260d2d2db Don't call 'mbrtowc' on WINDOWSNT
* src/emacs.c (using_utf8): Don't call 'mbrtowc' on WINDOWSNT
systems, as it's not available on Windows 9X.
2020-06-01 18:57:39 +03:00
Paul Eggert
68b6dad1d8 Be more aggressive in marking objects during GC
Simplified version of a patch from Pip Cet (Bug#41321#299).
* src/alloc.c (maybe_lisp_pointer): Remove.  All uses removed.
(mark_memory): Also look at the pointer offset by ‘lispsym’,
for symbols.
2020-05-31 16:30:54 -07:00
Philipp Stephani
43caa9680b Unbreak compilation with CHECK_STRUCTS defined.
* src/pdumper.c (dump_float): Update hash value after commit
9f7bfb6cb0.  The struct layout is still
compatible.
2020-05-31 19:50:04 +02:00
Eli Zaretskii
36f508f589 ; * src/xdisp.c (find_last_unchanged_at_beg_row): Fix a typo. 2020-05-31 20:34:00 +03:00
Eli Zaretskii
dc4db3ef09 Protect bidi cache from inadvertent resets
* src/xdisp.c (Fline_pixel_height, Fmove_point_visually): Save and
restore the bidi cache, to avoid inadvertently resetting it by
starting a new iteration through buffer text.  This could cause
trouble if these functions are called during a redisplay cycle,
especially while we were processing RTL text.
2020-05-31 17:34:09 +03:00
Eli Zaretskii
41232e6797 Avoid crashes due to bidi cache being reset during redisplay
If automatic character composition triggers GC, and
'garbage-collection-messages' are turned on, we could have the
bidi cache reset while processing RTL text, which would then
consistently crash.
* src/xdisp.c (display_echo_area_1): Protect the bidi cache
against changes inside 'try_window'.
2020-05-31 17:23:11 +03:00
Eli Zaretskii
360d7c716d Remove private prototype for 'execve' and its uses in MinGW build
* src/sysdep.c (emacs_exec_file): Don't compile this function
anymore on WINDOWSNT, since it is not used there.  This function
was the only reason for having 'execve' prototype in ms-w32.h.

* nt/inc/ms-w32.h (execve): Remove prototype and the MinGW64 vs
ming.org mess that it causes.
2020-05-30 13:56:20 +03:00
Eli Zaretskii
f42db4b6e1 Another fix of display of line-prefix with fringe bitmaps
* src/xdisp.c (redisplay_internal): Don't use "optimization 1"
if a glyph row from which to start display begins with a display
property that draws into the fringes.  (Bug#41584)
2020-05-29 23:02:10 +03:00
Eli Zaretskii
dc15e70ddd Fix display of line-prefix with fringe bitmaps
* src/xdisp.c (try_window_id): Don't use this optimization if a
glyph row from which to start display begins with a display
property that draws into the fringes.  (Bug#41584)
2020-05-29 17:00:52 +03:00
Mattias Engdegård
2bdb2cd10d Document that {en,de}code-coding-string preserve match data
* lisp/international/mule.el (define-coding-system):
Require :pre-write-conversion and :post-read-conversion functions
to leave the match data untouched.
* src/coding.c (Fdecode_coding_string, Fencode_coding_string):
Document functions as match-data-preserving.

Suggested by Stefan Monnier (see bug#41445).
2020-05-28 16:58:57 +02:00
Glenn Morris
4939beacb3 Merge from origin/emacs-27
bd7b681dc4 (origin/emacs-27) Tiny texinfo markup fixes
d0dd0e0612 ; Fix more @var/@code mixups in Elisp manual
313dc0439e ; Fix another format-spec typo in the Elisp manual
9d7fd78421 Make next-error behavior a bit more flexible
0691d25295 * etc/NEWS.25: Belatedly announce upcase-dwim and downcase...
df91c94ca8 Fix access to single-byte characters in buffer text
2020-05-28 07:50:26 -07:00
Paul Eggert
dcd96745b0 Fix crash with invalid bytecode vectors
* src/lread.c (read_vector): If the vector is to short to be for
bytecodes don’t do bytecode processing for it, as the processing
might run past the end of the vector.
2020-05-27 09:51:12 -07:00
Paul Eggert
9d11f127f1 --with-wide-int is a no-op on 64-bit hosts
* configure.ac: Clarify wording for --with-wide-int help.
* src/pdumper.c (dump_vectorlike_generic):
Do the eassert even if --with-wide-int was specified unnecessarily.
2020-05-27 09:51:12 -07:00
Paul Eggert
22446569cd Omit unnecessary USE_LAB_TAG #if
* src/lisp.h: Omit unnecessary #if; the condition is always false now.
2020-05-27 09:51:11 -07:00
Paul Eggert
0fc4989f34 Tweak GC performance if !USE_LSB_TAG
Performance issue reported by Eli Zaretskii (Bug#41321#149).
* src/alloc.c (GC_OBJECT_ALIGNMENT_MINIMUM): New constant.
(maybe_lisp_pointer): Use it instead of GCALIGNMENT.
2020-05-26 15:48:31 -07:00
Paul Eggert
9f7bfb6cb0 Port struct Lisp_FLoat to oddball platforms
* src/lisp.h (struct Lisp_Float): Declare via
GCALIGNED_UNION_MEMBER, not via GCALIGNED_STRUCT, since alloc.c
creates these in arrays and GCALIGNED_STRUCT does not necessarily
suffice to align struct Lisp_Float when it’s used in an array.
This avoids undefined behavior on oddball machines where
sizeof (struct Lisp_Float) is not a multiple of 8 and the compiler
does not support __attribute__ ((aligned 8)).
2020-05-26 00:47:48 -07:00
Paul Eggert
c4faf78a98 Move union emacs_align_type to alloc.c
* src/alloc.c (union emacs_align_type): Move to here ...
* src/lisp.h: ... from here, and uncomment out some of the
types that alloc.c can see but lisp.h cannot.
2020-05-25 23:28:04 -07:00
Paul Eggert
92278640ba Further fix for aborts due to GC losing pseudovectors
* src/alloc.c (MALLOC_ALIGNMENT_BOUND): Remove.
(LISP_ALIGNMENT): Go back to yesterday’s version, except use
union emacs_align_type instead of max_align_t.
(MALLOC_IS_LISP_ALIGNED): Go back to yesterday’s version.
(maybe_lisp_pointer): Check against GCALIGNMENT, not LISP_ALIGNMENT.
* src/lisp.h (union emacs_align_type): Bring back.
2020-05-25 23:06:41 -07:00
Paul Eggert
3abf76da56 Refix aborts due to GC losing pseudovectors
This is simpler, and fixes a bug in the previous fix.
* src/alloc.c (MALLOC_ALIGNMENT_BOUND): Simplify by
using max_align_t, since the buggy implementations won’t
break this simpler implementation.
(LISP_ALIGNMENT): Simplify by just using GCALIGNMENT, since the
fancier implementation wasn’t correct anyway, and fixing it
isn’t worth the trouble on practical platforms.
* src/lisp.h (union emacs_align_type): Remove.
2020-05-25 22:06:44 -07:00
Paul Eggert
0dc529175d Fix aborts due to GC losing pseudovectors
Problem reported by Eli Zaretskii (Bug#41321).
* src/alloc.c (MALLOC_ALIGNMENT_BOUND): New constant.
(LISP_ALIGNMENT): Lower it to avoid crashes on MinGW and similarly
buggy platforms where malloc returns pointers not aligned to
alignof (max_align_t).  But keep it higher on platforms where this
is known to work, as it helps GC performance.
(MALLOC_IS_LISP_ALIGNED): Define in terms of the other two.
* src/alloc.c (stacktop_sentry):
* src/thread.c (run_thread):
Don’t overalign or oversize stack sentries; they need to be
aligned only for pointers and Lisp_Object, not for arbitrary
pseudovector contents.
* src/lisp.h (union emacs_align_type): New type, used for
LISP_ALIGNMENT.
2020-05-25 20:29:50 -07:00
Eli Zaretskii
df91c94ca8 Fix access to single-byte characters in buffer text
* src/xdisp.c (get_visually_first_element)
(Fbidi_find_overridden_directionality):
* src/cmds.c (Fend_of_line): Use FETCH_BYTE instead of FETCH_CHAR,
and byte position instead of character position, to access
individual bytes of buffer text.  This avoids producing invalid
characters and accessing wrong buffer positions.  (Bug#41520)
2020-05-25 17:07:22 +03:00
Noam Postavsky
3b65fb7658 Fix segfault on closing frame with tooltip (Bug#41239)
* src/gtkutil.c (xg_free_frame_widgets): Empty and unreference the
tooltip widget before destroying its label.
2020-05-24 20:14:48 -04:00
Paul Eggert
9e977c4972 Restore check for Emacs 20.2 bytecodes
* src/eval.c (Ffetch_bytecode): Check for multibyte bytecodes
here too.  Problem reported by Stefan Monnier in:
https://lists.gnu.org/r/emacs-devel/2020-05/msg02876.html
2020-05-23 10:39:45 -07:00
Glenn Morris
d436e4840a Merge from origin/emacs-27
d6a0b66a0c (origin/emacs-27) * lisp/subr.el (save-match-data): Clarif...
1a6d59eeba Improve the documentation of setting up fontsets
c7737d40f2 ; * etc/TODO (Ligatures): Update the entry based on recent...
fb2e34cd21 ; * etc/TODO (Ligatures): Update the entry based on recent...
13b6dfd4f7 * doc/emacs/killing.texi (Rectangles): Improve indexing.
a10254dd46 Fix accessing files on networked drives on MS-Windows
2020-05-23 07:50:30 -07:00
Eli Zaretskii
a10254dd46 Fix accessing files on networked drives on MS-Windows
* src/w32.c (acl_get_file): Set errno to ENOTSUP if
get_file_security returns ERROR_NOT_SUPPORTED.  (Bug#41463)
2020-05-23 08:50:22 +03:00
Paul Eggert
62a5e890d7 Redo RCS Id for pdumper
* lisp/version.el: Don’t put an RCS Id style string into the
executable via purecopy, as this does not work with the pdumper.
* src/emacs.c (RCS_Id): New constant, for 'ident'.

(cherry picked from commit 3d1bcfba5e)
2020-05-21 19:17:36 +03:00
Andrea Corallo
6b3fb29ede ; src/alloc.c: Add a GC reg spill mechanism and Bug#41357 related commentary. 2020-05-20 11:32:16 +01:00
Paul Eggert
f0b0105d91 Hoist some byte-code checking out of eval
Check Lisp_Compiled objects better as they’re created,
so that the byte-code interpreter needn’t do the checks
each time it executes them.  This improved performance
of ‘make compile-always’ by 1.5% on my platform.  Also,
improve the quality of the (still-incomplete) checks, as
this is more practical now that they’re done less often.
* src/alloc.c (make_byte_code): Remove.  All uses removed.
(Fmake_byte_code): Put a better (though still incomplete)
check here instead.  Simplify by using Fvector instead
of make_uninit_vector followed by memcpy, and by using
XSETPVECTYPE instead of make_byte_code followed by XSETCOMPILED.
* src/bytecode.c (Fbyte_code): Do sanity check and conditional
translation to unibyte here instead of each time the function is
executed.
(exec_byte_code): Omit no-longer-necessary sanity and
unibyte checking.  Use SCHARS instead of SBYTES where
either will do, as SCHARS is faster.
* src/eval.c (fetch_and_exec_byte_code): New function.
(funcall_lambda): Use it.
(funcall_lambda, lambda_arity, Ffetch_bytecode):
Omit no-longer-necessary sanity checks.
(Ffetch_bytecode): Add sanity check if actually fetching.
* src/lisp.h (XSETCOMPILED): Remove.  All uses removed.
* src/lread.c (read1): Check byte-code objects more thoroughly,
albeit still incompletely, and do translation to unibyte here
instead of each time the function is executed.
(read1): Use XSETPVECYPE instead of make_byte_code.
(read_vector): Omit no-longer-necessary sanity check.
2020-05-19 23:25:16 -07:00
Paul Eggert
c5eafccc9d Reject attempts to clear pure strings
* src/fns.c (Ffillarray, Fclear_string):
Add CHECK_IMPURE here, to be consistent with Faset etc.
(Ffillarray): Prefer memset when the fill is a single byte.
2020-05-18 17:24:35 -07:00
Paul Eggert
3d1bcfba5e Redo RCS Id for pdumper
* lisp/version.el: Don’t put an RCS Id style string into the
executable via purecopy, as this does not work with the pdumper.
* src/emacs.c (RCS_Id): New constant, for 'ident'.
2020-05-18 15:21:25 -07:00
Glenn Morris
86594a3ddb Restore buffer-undo-list to buffer-local-variables
It has been missing since 2012-07-03 (Emacs 24.3)
"Cleanup basic buffer management", when undo_list was moved to
the end of struct buffer.  (Bug#33492)
* src/buffer.c (buffer_local_variables_1): New function.
(Fbuffer_local_variables): Explicitly add buffer-undo-list.
2020-05-18 10:54:14 -07:00
Andrea Corallo
abec255c02 * Fix Garbage Collector for missing calle-saved regs content (Bug#41357)
* src/alloc.c (SET_STACK_TOP_ADDRESS): Do not call
	__builtin_unwind_init.
	(flush_stack_call_func1): Rename from 'flush_stack_call_func'.
	(flush_stack_call_func): New function to spill all registers
	before calling 'flush_stack_call_func1'.  This to make sure the
	top of the stack identified includes those registers.
2020-05-17 22:37:28 +01:00
Glenn Morris
788c2480f4 Merge from origin/emacs-27
b4937f64cd (origin/emacs-27) Improve documentation of manually instal...
efd4e973a4 Reflect the emacs-devel ELPA/MELPA dispute in FAQ
28541674cd Consider face inheritance when checking region face backgr...
e75f6be6cc Fix dired default file operation (bug#41261)
406fb0746c Fix documentation related to 'command-switch-alist'.
747e0a2523 Improve ediff readability in misterioso theme (Bug#41221)
48830c73e7 Fix a crash in handle_display_spec
a37290a6f9 In x_hide_tip reset tip_last_frame for GTK+ tooltips only ...
3d81995692 Fix docstring of flymake-make-diagnostic (bug#40351)
632aa9d57a Go back to “Bahá’í”
e2406ff60f * lisp/dired.el (dired-toggle-marks): Doc fix.  (Bug#41097)

# Conflicts:
#	doc/emacs/building.texi
2020-05-16 10:29:14 -07:00
Clément Pit-Claudel
48830c73e7 Fix a crash in handle_display_spec
* src/xdisp.c (handle_display_spec): Check that the cdr of the
disable-eval spec is a cons before taking its car.  (Bug#41232)
2020-05-13 18:53:25 +03:00
Martin Rudalics
a37290a6f9 In x_hide_tip reset tip_last_frame for GTK+ tooltips only (Bug#41200)
* src/xfns.c (x_hide_tip): Reset tip_last_frame only when
using GTK+ system tooltips (Bug#41200).
2020-05-13 10:31:50 +02:00
Paul Eggert
4645430b92 Pacify GCC 10.1.0
Pacify GCC 10.1.0 so that it does not issue false alarms
when Emacs is configured with --enable-gcc-warnings.
* src/dispnew.c (clear_glyph_row):
* src/fns.c (hash_clear):
* src/keyboard.c (append_tab_bar_item):
* src/lisp.h (vcopy):
* src/xfaces.c (get_lface_attributes_no_remap)
(Finternal_copy_lisp_face, realize_default_face):
* src/xmenu.c (set_frame_menubar):
Work around -Warray-bounds false alarm in GCC 10.1.0.
* src/intervals.c (copy_properties):
Avoid -Wnull-dereference false alarm in GCC 10.1.0.
* src/lisp.h (xvector_contents_addr, xvector_contents):
New functions, useful for working around GCC bug 95072.
2020-05-11 17:54:24 -07:00
Glenn Morris
94224c4add * src/xdisp.c (Fwindow_text_pixel_size): Fix previous merge. 2020-05-09 10:17:27 -07:00
Glenn Morris
5c890bfc19 Merge from origin/emacs-27
be0d1cac83 (origin/emacs-27) Small fix for type of 'display-fill-colu...
c5e5839776 Fix customization of 'display-fill-column-indicator-charac...
d5c184aa3e Refer to fill column indicator Info node in some places.
e13300ae50 Merge branch 'emacs-27' of git.sv.gnu.org:/srv/git/emacs i...
0bae57033f Fix GTK's Tool Bar menu radio buttons
4c98aa7ea5 Minor clarifications in NEWS
a1cbd05f38 Improve documentation of 'with-suppressed-warnings'.
4a895c1b26 Fix a typo in a comment
2caf3e997e Improve documentation of Hi Lock mode
7081c1d66f Fix typos in the Emacs user manual
0385771e2f Fix references to Speedbar in VHDL mode
a76cafea0d Fix handling of FROM = t and TO = t by 'window-text-pixel-...

# Conflicts:
#	etc/NEWS
#	src/xdisp.c
2020-05-09 10:03:21 -07:00
Paul Eggert
e59f697cd5 Improve nonnull checking with GCC in emacs-module
* src/emacs-module.h.in (EMACS_ATTRIBUTE_NONNULL):
Also do the nonnull check with GCC.  (The old code did the
check with Clang but not with GCC.)
2020-05-09 09:11:53 -07:00
Philipp Stephani
d5c184aa3e Refer to fill column indicator Info node in some places.
* src/xdisp.c (syms_of_xdisp): Add reference to manual in
documentation strings for variables related to fill column indicators.

* lisp/display-fill-column-indicator.el (display-fill-column-indicator)
(display-fill-column-indicator-mode): Add reference to manual.
2020-05-09 10:22:01 +02:00