aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'master' into feature/igcHelmut Eller2026-01-021-1/+1
|\
| * ; Add 2026 to copyright years.Sean Whitton2026-01-011-1/+1
| |
* | Merge branch 'master' into feature/igcHelmut Eller2025-11-121-83/+104
|\ \ | |/
| * ; * src/bytecode.c (exec_byte_code): editing mistake (thanks Pip!)Mattias Engdegård2025-10-191-1/+1
| |
| * Disable -Wclobbered for GCC in exec_byte_code (bug#79610)Mattias Engdegård2025-10-191-15/+13
| | | | | | | | | | | | | | | | * src/bytecode.c (exec_byte_code): Disable the -Wclobbered warning for GCC locally as the old work-around doesn't appear to be effective for variables with explicitly assigned registers. This also allows us to remove that work-around which improves the code somewhat.
| * ; exec_byte_code: refactor branch caseMattias Engdegård2025-10-191-14/+14
| |
| * exec_byte_code: use fixed registers for top and pc (bug#79610)Mattias Engdegård2025-10-191-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | GCC seems to have difficulty allocating important global interpreter variables in registers; telling it which ones to use for 'top' and 'pc' makes a big difference and seems to ease pressure enough for it to deal with other variables as well. We do it for AMD64 and ARM64. Clang doesn't seem to need these directives. It does result in -Wclobbered warnings that seem difficult to silence. * src/bytecode.c (BC_REG_TOP, BC_REG_PC): New. (exec_byte_code): Use them.
| * ; exec_byte_code: don't re-use op in FETCH2Mattias Engdegård2025-10-191-1/+1
| |
| * exec_byte_code: reduce use of semi-global 'op' (bug#79610)Mattias Engdegård2025-10-191-56/+65
| | | | | | | | | | | | | | | | | | | | | | * src/bytecode.c (exec_byte_code): Re-type op from int to ptrdiff_t, which avoids some useless conversions. Reduce its use by using local variables for intra-block use, and another variable (arg) where it doesn't need to be alive across instruction dispatch. We also eliminate it where performance doesn't matter by re-fetching it from the instruction stream. All this should help the register allocator.
* | [MPS] Use xmalloc to allocate 'bc_thread_state' structPip Cet2025-10-131-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This struct cannot live in MPS-managed memory because it's required for scanning the bytecode stack. * src/bytecode.c (free_bc_thread) [MPS]: Free bytecode structure. (Finternal_stack_stats, exec_byte_code): * src/igc.c (scan_bc): Adjust. (root_create_bc): Save 'bc' pointer. * src/lisp.h (get_act_rec, set_act_rec): * src/thread.c (mark_one_thread, finalize_one_thread): Adjust. (Fmake_thread) [MPS]: (init_threads) [MPS]: Allocate bytecode structure. * src/thread.h (struct thread_state): Turn 'bc' member into a pointer (MPS) or single-member array.
* | Merge branch 'master' into feature/igcHelmut Eller2025-10-041-3/+3
|\ \ | |/
| * ; * src/bytecode.c (exec_byte_code): Revert gratuituous style changeMattias Engdegård2025-09-191-1/+1
| |
| * ; * src/bytecode.c (exec_byte_code): Fix coding style.Po Lu2025-09-191-1/+1
| |
| * * src/bytecode.c (exec_byte_code): Better quitcounter reset value.Mattias Engdegård2025-09-181-1/+3
| | | | | | | | | | | | This value forces a quit check at the next backward branch, to avoid rare situations being hard to interrupt. Suggested by Pip Cet.
| * Don't save quitcounter across longjmp in exec_byte_codeMattias Engdegård2025-09-181-3/+1
| | | | | | | | | | | | * src/bytecode.c (exec_byte_code): Reset quitcounter to 1 after longjmp; the exact value isn't important. This may reduce register pressure a tiny bit or at least remove a useless stack slot.
* | Merge branch 'master' into feature/igcGerd Möllmann2025-07-311-5/+1
|\ \ | |/
| * ; * src/bytecode.c: remove unneeded includesMattias Engdegård2025-07-301-4/+0
| |
* | Merge branch 'master' into feature/igcPip Cet2025-06-191-4/+1
|\ \ | |/
| * * src/bytecode.c (exec_byte_code): Remove superfluous conditionMattias Engdegård2025-06-151-4/+1
| | | | | | | | | | Bytecode should never be able to set anything to Qunbound because that value is not accessible from Lisp. Found by Pip Cet.
* | Merge branch 'master' into feature/igcPip Cet2025-05-011-1/+1
|\ \ | |/
| * Avoid name clashes with static GnuTLSPaul Eggert2025-04-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Work around a bug in GnuTLS 3.7.11 and earlier: when built statically, its mistakenly exports symbols hash_lookup and hash_string, which collide with Emacs symbols of the same name, preventing temacs from linking statically. Problem reported by Greg A. Woods (Bug#77476). Because GnuTLS never uses hash_lookup or hash_string this issue ordinarily doesn’t seem to prevent temacs from linking to GnuTLS on GNU/Linux, as it’s linked dynamically and the dynamic linker never needs to resolve references to either symbol. However, I suppose a clash or bug could occur even with dynamic linking if Emacs later loads a module that uses either symbol. Although GnuTLS should be fixed, Emacs should link statically to current and older GnuTLS versions in the meantime, and it should avoid potential problems with dynamic linking. Renaming the two clashing names is an easy way to do this. For consistency with the new name for hash_lookup, also rename hash_lookup_with_hash and hash_lookup_get_hash. * src/fns.c (hash_find_with_hash): Rename from hash_lookup_with_hash. (hash_find): Rename from hash_lookup. (hash_find_get_hash): Rename from hash_lookup_get_hash. (hash_char_array): Rename from hash_string. All uses changed.
* | Make specpdl discards explicitPip Cet2025-02-161-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some code used to modify the specpdl pointer directly to discard specpdl entries without unwinding through them. This introduces an API to do so safely, because in the MPS case we need to mark the discarded specpdl entries as free so they will not be traced by GC. * src/bytecode.c (exec_byte_code): * src/dired.c (directory_files_internal): * src/eval.c (eval_sub): (Ffuncall): (apply_lambda): Use 'unbind_discard_to'. (unbind_discard_to): New function. * src/fileio.c (Fmake_temp_file_internal): (Finsert_file_contents): (write_region): * src/fns.c (extract_data_from_object): Use 'unbind_discard_to'. * src/lisp.h (SPECPDL_INDEX_PREV): New function. (safe_free): * src/process.c (Fmake_pipe_process): (Fmake_serial_process): (connect_network_socket): (Fmake_network_process): (server_accept_connection): Use 'unbind_discard_to'.
* | Merge 'master' into 'feature/igc'Pip Cet2025-02-011-3/+0
|\ \ | |/
| * Merge branch 'scratch/no-purespace' into 'master'Stefan Kangas2025-02-011-3/+0
| |\
| | * Pure storage removal: Replace calls to removed functionsPip Cet2024-12-121-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/alloc.c (string_bytes, pin_string, valid_lisp_object_p) (process_mark_stack, survives_gc_p, syms_of_alloc): * src/androidterm.c (android_term_init): Replace call to 'build_pure_c_string'. * src/buffer.c (init_buffer_once, syms_of_buffer): * src/bytecode.c (exec_byte_code): * src/callint.c (syms_of_callint): * src/callproc.c (syms_of_callproc): * src/category.c (Fdefine_category): * src/coding.c (syms_of_coding): * src/comp.c (Fcomp__compile_ctxt_to_file0) (maybe_defer_native_compilation, syms_of_comp): * src/data.c (Fsetcar, Fsetcdr, Fdefalias, Faset, syms_of_data): * src/dbusbind.c (syms_of_dbusbind): * src/doc.c (Fsnarf_documentation): * src/emacs-module.c (syms_of_module): * src/eval.c (Finternal__define_uninitialized_variable) (Fdefconst_1, define_error, syms_of_eval): * src/fileio.c (syms_of_fileio): * src/fns.c (Ffillarray, Fclear_string, check_mutable_hash_table): * src/fontset.c (syms_of_fontset): * src/frame.c (make_initial_frame): * src/haikufns.c (syms_of_haikufns): * src/intervals.c (create_root_interval): * src/keyboard.c (syms_of_keyboard): * src/keymap.c (Fmake_sparse_keymap, Fset_keymap_parent) (store_in_keymap, syms_of_keymap): * src/lisp.h: * src/lread.c (Fload, read0, intern_c_string_1, define_symbol) (Fintern, defsubr, syms_of_lread): * src/pdumper.c (Fdump_emacs_portable): * src/pgtkfns.c (syms_of_pgtkfns): * src/pgtkterm.c (syms_of_pgtkterm): * src/process.c (syms_of_process): * src/search.c (syms_of_search): * src/sqlite.c (syms_of_sqlite): * src/syntax.c (syms_of_syntax): * src/treesit.c (syms_of_treesit): * src/w32fns.c (syms_of_w32fns): * src/xdisp.c (syms_of_xdisp): * src/xfaces.c (syms_of_xfaces): * src/xfns.c (syms_of_xfns): * src/xftfont.c (syms_of_xftfont): * src/xterm.c (syms_of_xterm): Remove calls to 'PURE_P', 'CHECK_IMPURE', 'Fpurecopy', and replace calls to 'build_pure_c_string', 'pure_list', 'pure_listn', etc., by impure equivalents.
| | * Pure storage removal: Main partPip Cet2024-12-121-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/alloc.c (pure, PUREBEG, purebeg, pure_size) (pure_bytes_used_before_overflow, pure_bytes_used_lisp) (pure_bytes_used_non_lisp): Remove definitions. (init_strings): Make empty strings impure. (cons_listn): Drop 'cons' argument. (pure_listn): Remove function. (init_vectors): Allocate zero vector manually to avoid freelist issues. (pure_alloc, check_pure_size, find_string_data_in_pure) (make_pure_string, make_pure_c_string, pure_cons, make_pure_float) (make_pure_bignum, make_pure_vector, purecopy_hash_table): Remove functions. (purecopy): Reduce to hash consing our argument. (init_alloc_once_for_pdumper): Adjust to lack of pure space. (pure-bytes-used): Adjust docstring to mark as obsolete. (purify-flag): Keep for hash consing, but adjust docstring. * src/bytecode.c: * src/comp.c: Don't include "puresize.h". * src/conf_post.h (SYSTEM_PURESIZE_EXTRA): Remove definition. * src/data.c (pure_write_error): Remove function. * src/deps.mk: Remove puresize.h dependency throughout. * src/emacs.c: * src/fns.c: * src/intervals.c: * src/keymap.c: Don't include "puresize.h". * src/lisp.h (struct Lisp_Hash_Table): Adjust comment. (pure_listn, pure_list, build_pure_c_string): Remove. * src/w32heap.c (FREEABLE_P): Don't do use 'dumped_data'. (malloc_before_dump, realloc_before_dump, free_before_dump): Remove functions. * src/w32heap.h: Adjust prototype. * lisp/loadup.el: * lisp/startup.el: Remove purespace code.
* | | Merge branch 'master' into scratch/igcGerd Möllmann2025-01-151-1/+1
|\ \ \ | |/ /
| * | Use calln instead of calling Ffuncall directlyStefan Kangas2025-01-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/bytecode.c (bcall0): * src/comp.c (bcall0): * src/eval.c (apply1): * src/lisp.h (call0): * src/thread.c (invoke_thread_function): Use calln instead of calling Ffuncall directly. * admin/coccinelle/calln.cocci: New semantic patch.
* | | Restore maybe_quit before functions are called.Helmut Eller2025-01-081-1/+3
| | | | | | | | | | | | | | | * src/bytecode.c (exec_byte_code): Call maybe_quite before pushing a function.
* | | Call maybe_quit at a different point to the help the profiler.Helmut Eller2025-01-081-1/+1
| | | | | | | | | | | | | | | | | | | | | * src/bytecode.c (exec_byte_code): In the docall sequence, move the to maybe_quit forward immediately before lisp_eval_depth--. This helps the profiler to see the function that was interrupted by the SIGPROF signal.
* | | Merge branch 'master' into scratch/igcGerd Möllmann2025-01-081-1/+1
|\ \ \ | |/ /
| * | Update copyright year to 2025Paul Eggert2025-01-011-1/+1
| |/ | | | | | | Run "TZ=UTC0 admin/update-copyright".
* | Merge branch 'master' into scratch/igcGerd Möllmann2024-10-191-5/+19
|\ \ | |/
| * Don’t ignore -Wclobbered in bytecode.cPaul Eggert2024-08-161-5/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fix is prompted by Emacs bug#71744. The working hypothesis is that there are some bugs in Emacs, and some in GCC’s diagnostics, and that this patch fixes the Emacs bugs and works around the GCC diagnostic bugs. The hypothesis is that GCC diagnostic bugs occur when GCC coalesces variables or temporaries and some variables are clobbered by setjmp and some vars/temps are not. Part of this hypothesis involves GCC diagnosing the wrong variables. Instead of ignoring the diagnostics, which the hypothesis suggests indicate either problems in Emacs or in GCC, fix the Emacs bugs and pacify the GCC false positives, with comments about the GCC bugs. GCC’s true positives are helpful enough in squashing obscure bugs like Emacs bug#71744, that it’s worth going to some effort to pacify -Wclobbered instead of ignoring it. * src/bytecode.c: Do not ignore -Wclobbered. (exec_byte_code): Fix violations of the C standard, where setjmp clobbered quitcounter and bc. If GCC_LINT && __GNUC__ && !__clang__, work around GCC -Wclobbered warnings for bytestr_data and vectorp.
* | Merge branch 'master' into scratch/igcGerd Möllmann2024-08-051-5/+5
|\ \ | |/
| * Simplify and speed up numeric comparisonsMattias Engdegård2024-07-271-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | This makes comparison functions (=, /=, <, <=, >, >=, min, max) quite a bit faster (10-20 %). Bytecode ops on fixnums are not affected, nor is `value<`. * src/data.c (arithcompare): Simplify the code to reduce the number of branches. Remove the comparison code argument; instead, return the relation encoded as bits, which can be tested cheaply. All callers adapted. * src/lisp.h (enum Arith_Comparison): Remove. (Cmp_Bit_*, cmp_bits_t): New.
* | Merge branch 'master' into scratch/igcGerd Möllmann2024-06-231-1/+1
|\ \ | |/
| * Rename `SUBR_NATIVE_COMPILED` to `NATIVE_COMP_FUNCTION` (bug#71123)Stefan Monnier2024-05-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Keep the name consistent with the naming used in the ELisp world. * src/pdumper.c (dump_object_emacs_ptr, dump_do_fixup): * src/eval.c (eval_sub, funcall_general, funcall_lambda): * src/alloc.c (CHECK_ALLOCATED_AND_LIVE_SYMBOL, survives_gc_p): * src/data.c (Fcl_type_of, Ffset, Fnative_comp_function_p) (Fsubr_native_lambda_list, Finteractive_form): * src/comp.c (check_comp_unit_relocs): * src/bytecode.c (exec_byte_code): * src/lisp.h (NATIVE_COMP_FUNCTIONP, NATIVE_COMP_FUNCTION_DYNP): Rename from `SUBR_NATIVE_COMPILEDP` and `SUBR_NATIVE_COMPILED_DYNP`.
* | Merge branch 'master' into scratch/igcGerd Möllmann2024-05-261-14/+12
|\ \ | |/
| * (COMPILED): Rename to CLOSUREStefan Monnier2024-04-281-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In preparation for the use of `PVEC_COMPILED` objects for interpreted functions, rename them to use a more neutral name. * src/lisp.h (enum pvec_type): Rename `PVEC_COMPILED` to `PVEC_CLOSURE`. (enum Lisp_Compiled): Use `CLOSURE_` prefix i.s.o `COMPILED_`. Also use `CODE` rather than `BYTECODE`. (CLOSUREP): Rename from `COMPILEDP`. (enum Lisp_Closure): Rename from `Lisp_Compiled`. * src/alloc.c, src/bytecode.c, src/comp.c, src/data.c, src/eval.c, * src/fns.c, src/lisp.h, src/lread.c, src/pdumper.c, src/print.c, * src/profiler.c: Rename all uses accordingly. * src/.gdbinit (xclosure): Rename from `xcompiled`. (xcompiled): New obsolete alias. (xpr): Adjust accordingly. Also adjust to new PVEC_CLOSURE tag name.
| * Drop unnecessary type check in varref and varset byte opsMattias Engdegård2024-04-181-4/+2
| | | | | | | | | | | | * src/bytecode.c (exec_byte_code): We can safely assume that the immediate argument to varref and varset is a bare symbol; the byte-compiler should guarantee that.
* | Initial result of applying diffGerd Möllmann2024-04-181-0/+15
|/
* Slight switch byte op speedupMattias Engdegård2024-02-191-18/+19
| | | | | * src/bytecode.c (exec_byte_code): Hoist symbols_with_pos_enabled check from fast loop, and eliminate the initial index check.
* Bytecode engine fast-path streamlining of plain symbolsMattias Engdegård2024-01-311-9/+11
| | | | | | * src/bytecode.c (exec_byte_code): Only use fast-path optimisations for calls and dynamic variable reference and setting where the symbol is plain, which is much faster.
* Eliminate lazy bytecode loadingMattias Engdegård2024-01-311-15/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The obsolete lazy-loaded bytecode feature, enabled by `byte-compile-dynamic`, slows down Lisp execution even when not in use because every call to a bytecode function has to check that function for laziness. This change forces up-front loading of all lazy bytecode so that we can remove all those checks. (Dynamically loaded doc strings are not affected.) There is no point in generating lazy bytecode any more so we stop doing that; this simplifies the compiler. `byte-compile-dynamic` now has no effect. This is a fully compatible change; the few remaining users of `byte-compile-dynamic` should not notice any difference. * src/lread.c (bytecode_from_rev_list): Force eager loading of lazy bytecode. * src/bytecode.c (exec_byte_code): Remove lazy bytecode checks. * src/eval.c (fetch_and_exec_byte_code, Ffetch_bytecode): Remove. (funcall_lambda): Call exec_byte_code directly, avoiding checks. * lisp/subr.el (fetch-bytecode): New definition, obsolete no-op. * lisp/emacs-lisp/disass.el (disassemble-1): * lisp/emacs-lisp/bytecomp.el (byte-compile-unfold-bcf): Remove calls to fetch-bytecode. (byte-compile-dynamic): Update doc string. (byte-compile-close-variables, byte-compile-from-buffer) (byte-compile-insert-header, byte-compile-output-file-form) (byte-compile--output-docform-recurse, byte-compile-output-docform) (byte-compile-file-form-defmumble): Remove effects of byte-compile-dynamic. * doc/lispref/compile.texi (Dynamic Loading): Remove node now that the entire `byte-compile-dynamic` facility has been rendered inert. * etc/NEWS: Announce changes.
* Share hash table test structsMattias Engdegård2024-01-131-1/+1
| | | | | | | | | | | | | | | | This saves several words in the hash table object at the cost of an indirection at runtime. This seems to be a gain in overall performance. FIXME: We cache hash test objects in a rather clumsy way. A better solution is sought. * src/lisp.h (struct Lisp_Hash_Table): Use a pointer to the test struct. All references adapted. * src/alloc.c (garbage_collect): * src/fns.c (struct hash_table_user_test, hash_table_user_tests) (mark_fns, get_hash_table_user_test): New state for caching test structs, and functions managing it.
* Inlined and specialised hash table look-upMattias Engdegård2024-01-131-1/+1
| | | | | | | | | | | This improves performance in several ways. Separate functions are used depending on whether the caller has a hash value computed or not. * src/fns.c (hash_lookup_with_hash, hash_lookup_get_hash): New. (hash_lookup): Remove hash return argument. All callers adapted. hash_lookup_with_hash hash_hash_t arg
* Merge from savannah/emacs-29Po Lu2024-01-021-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dc4e6b13296 ; Update copyright years in more files 64b37776318 ; Run set-copyright from admin.el 8e1c56ae467 ; Add 2024 to copyright years # Conflicts: # doc/misc/modus-themes.org # doc/misc/texinfo.tex # etc/NEWS # etc/refcards/ru-refcard.tex # etc/themes/modus-operandi-theme.el # etc/themes/modus-themes.el # etc/themes/modus-vivendi-theme.el # lib/alloca.in.h # lib/binary-io.h # lib/c-ctype.h # lib/c-strcasecmp.c # lib/c-strncasecmp.c # lib/careadlinkat.c # lib/cloexec.c # lib/close-stream.c # lib/diffseq.h # lib/dup2.c # lib/filemode.h # lib/fpending.c # lib/fpending.h # lib/fsusage.c # lib/getgroups.c # lib/getloadavg.c # lib/gettext.h # lib/gettime.c # lib/gettimeofday.c # lib/group-member.c # lib/malloc.c # lib/md5-stream.c # lib/md5.c # lib/md5.h # lib/memmem.c # lib/memrchr.c # lib/nanosleep.c # lib/save-cwd.h # lib/sha1.c # lib/sig2str.c # lib/stdlib.in.h # lib/strtoimax.c # lib/strtol.c # lib/strtoll.c # lib/time_r.c # lib/xalloc-oversized.h # lisp/auth-source-pass.el # lisp/emacs-lisp/lisp-mnt.el # lisp/emacs-lisp/timer.el # lisp/info-look.el # lisp/jit-lock.el # lisp/loadhist.el # lisp/mail/rmail.el # lisp/net/ntlm.el # lisp/net/webjump.el # lisp/progmodes/asm-mode.el # lisp/progmodes/project.el # lisp/progmodes/sh-script.el # lisp/textmodes/flyspell.el # lisp/textmodes/reftex-toc.el # lisp/textmodes/reftex.el # lisp/textmodes/tex-mode.el # lisp/url/url-gw.el # m4/alloca.m4 # m4/clock_time.m4 # m4/d-type.m4 # m4/dirent_h.m4 # m4/dup2.m4 # m4/euidaccess.m4 # m4/fchmodat.m4 # m4/filemode.m4 # m4/fsusage.m4 # m4/getgroups.m4 # m4/getloadavg.m4 # m4/getrandom.m4 # m4/gettime.m4 # m4/gettimeofday.m4 # m4/gnulib-common.m4 # m4/group-member.m4 # m4/inttypes.m4 # m4/malloc.m4 # m4/manywarnings.m4 # m4/mempcpy.m4 # m4/memrchr.m4 # m4/mkostemp.m4 # m4/mktime.m4 # m4/nproc.m4 # m4/nstrftime.m4 # m4/pathmax.m4 # m4/pipe2.m4 # m4/pselect.m4 # m4/pthread_sigmask.m4 # m4/readlink.m4 # m4/realloc.m4 # m4/sig2str.m4 # m4/ssize_t.m4 # m4/stat-time.m4 # m4/stddef_h.m4 # m4/stdint.m4 # m4/stdio_h.m4 # m4/stdlib_h.m4 # m4/stpcpy.m4 # m4/strnlen.m4 # m4/strtoimax.m4 # m4/strtoll.m4 # m4/time_h.m4 # m4/timegm.m4 # m4/timer_time.m4 # m4/timespec.m4 # m4/unistd_h.m4 # m4/warnings.m4 # nt/configure.bat # nt/preprep.c # test/lisp/register-tests.el
| * ; Add 2024 to copyright yearsPo Lu2024-01-021-1/+1
| |
* | Provide backtrace for byte-ops aref and asetMattias Engdegård2023-07-261-13/+33
| | | | | | | | | | | | | | | | | | | | | | | | Produce synthetic backtrace entries for `aref` and `aset` byte-ops when the index is non-fixnum, or is out of range for vector or record arguments (bug#64613). * src/bytecode.c (exec_byte_code): Detect type and range errors in-line for aref and aset. * src/data.c (syms_of_data): Declare symbols Qaref and Qaset. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--byte-op-error-cases): Add test cases.