aboutsummaryrefslogtreecommitdiffstats
path: root/src/comp.c
diff options
context:
space:
mode:
authorStefan Kangas2023-02-18 10:45:46 +0100
committerStefan Kangas2023-02-18 10:45:46 +0100
commit0be5f7ab6368175953c0a5bcbbd485fd9edda2b0 (patch)
tree9794ae60deb1cedca6d4354a8d89619db5a10710 /src/comp.c
parent1298d1db189bf434e54a792d3a6746237881f251 (diff)
parent1769a588300f471a85fe8887864ae33340dececb (diff)
downloademacs-0be5f7ab6368175953c0a5bcbbd485fd9edda2b0.tar.gz
emacs-0be5f7ab6368175953c0a5bcbbd485fd9edda2b0.zip
Merge from origin/emacs-29
1769a588300 Fix some uses of 'use-dialog-box' deef41a8259 Fix hi-lock-tests when 'use-dialog-box' is non-nil 5093a534960 Fix regression due to change in face sort order by 'face-... 3e747630999 * lisp/files.el (file-equal-p): Work around Haiku stat bug. 13fd7667f9c ; * src/treesit.c: Improve sectioning. a40b1745d4a (project-vc-backend-markers-alist): Add entry for vc-got 18e96ed7c8a project.el: Extract backend->marker association for a defvar 0a5615669a4 Don't completely clip into visible range in treesit_recor... 5b34fc07085 * lisp/treesit.el (treesit-node-at): Update docstring (bu... 1c7d7623781 ; Minor copyedit of NEWS wrt *-ts-modes 09fad246de8 * lisp/calc/calc.el (calc-mode): Improve docstring. 8aad8d75aa9 ; Improve and update documentation of native compilation d6e4f243720 Merge 'emacs-29' into 'feature/inhibit-native-comp-cleanup' a555abc56d5 Fix order of faces in 'face-list' b44a7ff85dc Allow 'icon-title-format' to have the value t f1f571e72ae Add electric indent for preproc directives 83af806ab7c Rename 'emacs-news-toggle-tag' to 'emacs-news-cycle-tag' 5bc88b3b175 Add menu to news-mode 40f4bc4e0aa ; Avoid installing VC package dependencies multiple times 1c9d81a2b42 Attempt to recognise if a VC package has no Elisp files 2550e8bb0b0 Fix mule-tests under en_US.UTF-8 locale 32795309939 Move block closer above declaration_list rule (bug#61531) b18754bb179 Minor improvements in c-ts-mode and docs 3c6b726a7b4 Add super node as a keyword 1917c51fe68 ; Prevent ERC-induced false positive in JUnit report b16965ef7e6 Delete perplexing paragraph from Gnus manual 43c62a4732d ; Fix typo fdac69b45e6 ; Auto-commit of loaddefs files. 7678b7e46f2 Eglot: check server capability before sending didSave (bu... a3a1ef7bd5e Fix rust-ts-mode type and module highlighting (Bug#61302) 477aa047ee7 rust-ts-mode: Highlight variable reassignments 5206a551c16 Improve backward compatibility of save-restriction accd88d5545 Don't indent template_string contents (bug#61503) d97a3839967 csharp-ts-mode: fontify compiler directives (bug#61512) 420d2cae846 Update to Transient v0.3.7-209-gdab1dfa a3751b5d0c1 ; Raise an error if a VC package checkout is empty 6a32ba8b69c ; Fix the installation of dependencies for VC packages 4eac80fcc39 ; Prepare to update ERC version to 5.5 4f099a72173 ; Remove failing erc-reuse-buffers test ce4a066ed1e * Generate trampolines in a temporary directory if no oth... 4bb27a5ca93 ; Minor docs copyedits 13bcff3da5c Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/... 3d572ae0d50 Rename with/without-narrowing to with/without-restriction d806b0e33cf * lisp/repeat.el: Rename internal function and variable (... 1a64f326e0a * Fix previous change 95692f6754c Rename native-comp-deferred-compilation-deny-list 8d8464bd5a9 Rename native-comp-deferred-compilation into native-comp-... 5d0912f1445 Rename comp-enable-subr-trampolines into native-comp-enab... dd8b720ee74 ; * etc/NEWS: Fix typos. 909bd04cf5f ; * lisp/calendar/lunar.el: Add comments. (bug#61460) 10f2aedea9a ; * lisp/progmodes/c-ts-mode.el (c-ts-base-mode): delete ... abfd00e5c02 * lisp/emacs-lisp/comp.el (native-comp-never-optimize-fun... 1795839babc Support `comp-enable-subr-trampolines' as string value 865758130a1 ; * admin/git-bisect-start: Update failing commits b948d0d7efe Merge branch 'scratch/fix-locked-narrowing' b6e2799aa1c * Some more `inhibit-native-compile' clean-up dcb2379a463 Minor improvements to labeled narrowing c0681cd3477 Revert "Add new variable 'inhibit-native-compilation'" 3969a34fa1b Revert "Rename to inhibit-automatic-native-compilation" 4297039bd13 Save and restore the absence of narrowing locks 2956e54b1dd Add an extensive test for labeled (locked) narrowing 79ce185ad13 Update the documentation about labeled (locked) narrowing a6cd4553d48 Rename two long line optimizations variables 0d73e4aa261 Add specific symbols for narrowings d8438e2bb44 Add 'without-narrowing' macro 97314447e60 Make 'narrowing-lock' and 'narrowing-unlock' internal a4aa32bdfff Fix 'save-restriction' for narrowing locks
Diffstat (limited to 'src/comp.c')
-rw-r--r--src/comp.c98
1 files changed, 48 insertions, 50 deletions
diff --git a/src/comp.c b/src/comp.c
index 7d2987605d9..1b55226b0c3 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -5174,8 +5174,7 @@ maybe_defer_native_compilation (Lisp_Object function_name,
5174 if (!load_gccjit_if_necessary (false)) 5174 if (!load_gccjit_if_necessary (false))
5175 return; 5175 return;
5176 5176
5177 if (!native_comp_deferred_compilation 5177 if (!native_comp_jit_compilation
5178 || !NILP (Vinhibit_automatic_native_compilation)
5179 || noninteractive 5178 || noninteractive
5180 || !NILP (Vpurify_flag) 5179 || !NILP (Vpurify_flag)
5181 || !COMPILEDP (definition) 5180 || !COMPILEDP (definition)
@@ -5672,28 +5671,18 @@ syms_of_comp (void)
5672{ 5671{
5673#ifdef HAVE_NATIVE_COMP 5672#ifdef HAVE_NATIVE_COMP
5674 DEFVAR_LISP ("comp--delayed-sources", Vcomp__delayed_sources, 5673 DEFVAR_LISP ("comp--delayed-sources", Vcomp__delayed_sources,
5675 doc: /* List of sources to be native-compiled when startup is finished. 5674 doc: /* List of sources to be native-compiled when startup is finished.
5676For internal use. */); 5675For internal use. */);
5677 DEFVAR_BOOL ("comp--compilable", 5676 DEFVAR_BOOL ("comp--compilable", comp__compilable,
5678 comp__compilable, 5677 doc: /* Non-nil when comp.el can be native compiled.
5679 doc: /* Non-nil when comp.el can be native compiled.
5680For internal use. */); 5678For internal use. */);
5681 /* Compiler control customizes. */ 5679 /* Compiler control customizes. */
5682 DEFVAR_LISP ("inhibit-automatic-native-compilation", 5680 DEFVAR_BOOL ("native-comp-jit-compilation", native_comp_jit_compilation,
5683 Vinhibit_automatic_native_compilation, 5681 doc: /* If non-nil, compile loaded .elc files asynchronously.
5684 doc: /* If non-nil, inhibit automatic native compilation of loaded .elc files.
5685 5682
5686After compilation, each function definition is updated to the native 5683After compilation, each function definition is updated to use the
5687compiled one. */); 5684natively-compiled one. */);
5688 Vinhibit_automatic_native_compilation = Qnil; 5685 native_comp_jit_compilation = true;
5689
5690 DEFVAR_BOOL ("native-comp-deferred-compilation",
5691 native_comp_deferred_compilation,
5692 doc: /* If non-nil compile loaded .elc files asynchronously.
5693
5694After compilation, each function definition is updated to the native
5695compiled one. */);
5696 native_comp_deferred_compilation = true;
5697 5686
5698 DEFSYM (Qnative_comp_speed, "native-comp-speed"); 5687 DEFSYM (Qnative_comp_speed, "native-comp-speed");
5699 DEFSYM (Qnative_comp_debug, "native-comp-debug"); 5688 DEFSYM (Qnative_comp_debug, "native-comp-debug");
@@ -5837,74 +5826,83 @@ compiled one. */);
5837 /* FIXME should be initialized but not here... Plus this don't have 5826 /* FIXME should be initialized but not here... Plus this don't have
5838 to be necessarily exposed to lisp but can easy debug for now. */ 5827 to be necessarily exposed to lisp but can easy debug for now. */
5839 DEFVAR_LISP ("comp-subr-list", Vcomp_subr_list, 5828 DEFVAR_LISP ("comp-subr-list", Vcomp_subr_list,
5840 doc: /* List of all defined subrs. */); 5829 doc: /* List of all defined subrs. */);
5841 DEFVAR_LISP ("comp-abi-hash", Vcomp_abi_hash, 5830 DEFVAR_LISP ("comp-abi-hash", Vcomp_abi_hash,
5842 doc: /* String signing the .eln files ABI. */); 5831 doc: /* String signing the .eln files ABI. */);
5843 Vcomp_abi_hash = Qnil; 5832 Vcomp_abi_hash = Qnil;
5844 DEFVAR_LISP ("comp-native-version-dir", Vcomp_native_version_dir, 5833 DEFVAR_LISP ("comp-native-version-dir", Vcomp_native_version_dir,
5845 doc: /* Directory in use to disambiguate eln compatibility. */); 5834 doc: /* Directory in use to disambiguate eln compatibility. */);
5846 Vcomp_native_version_dir = Qnil; 5835 Vcomp_native_version_dir = Qnil;
5847 5836
5848 DEFVAR_LISP ("comp-deferred-pending-h", Vcomp_deferred_pending_h, 5837 DEFVAR_LISP ("comp-deferred-pending-h", Vcomp_deferred_pending_h,
5849 doc: /* Hash table symbol-name -> function-value. 5838 doc: /* Hash table symbol-name -> function-value.
5850For internal use. */); 5839For internal use. */);
5851 Vcomp_deferred_pending_h = CALLN (Fmake_hash_table, QCtest, Qeq); 5840 Vcomp_deferred_pending_h = CALLN (Fmake_hash_table, QCtest, Qeq);
5852 5841
5853 DEFVAR_LISP ("comp-eln-to-el-h", Vcomp_eln_to_el_h, 5842 DEFVAR_LISP ("comp-eln-to-el-h", Vcomp_eln_to_el_h,
5854 doc: /* Hash table eln-filename -> el-filename. */); 5843 doc: /* Hash table eln-filename -> el-filename. */);
5855 Vcomp_eln_to_el_h = CALLN (Fmake_hash_table, QCtest, Qequal); 5844 Vcomp_eln_to_el_h = CALLN (Fmake_hash_table, QCtest, Qequal);
5856 5845
5857 DEFVAR_LISP ("native-comp-eln-load-path", Vnative_comp_eln_load_path, 5846 DEFVAR_LISP ("native-comp-eln-load-path", Vnative_comp_eln_load_path,
5858 doc: /* List of eln cache directories. 5847 doc: /* List of directories to look for natively-compiled *.eln files.
5859 5848
5860If a directory is non absolute it is assumed to be relative to 5849The *.eln files are actually looked for in a version-specific
5861`invocation-directory'. 5850subdirectory of each directory in this list. That subdirectory
5862`comp-native-version-dir' value is used as a sub-folder name inside 5851is determined by the value of `comp-native-version-dir'.
5863each eln cache directory. 5852If the name of a directory in this list is not absolute, it is
5864The last directory of this list is assumed to be the system one. */); 5853assumed to be relative to `invocation-directory'.
5854The last directory of this list is assumed to be the one holding
5855the system *.eln files, which are the files produced when building
5856Emacs. */);
5865 5857
5866 /* Temporary value in use for bootstrap. We can't do better as 5858 /* Temporary value in use for bootstrap. We can't do better as
5867 `invocation-directory' is still unset, will be fixed up during 5859 `invocation-directory' is still unset, will be fixed up during
5868 dump reload. */ 5860 dump reload. */
5869 Vnative_comp_eln_load_path = Fcons (build_string ("../native-lisp/"), Qnil); 5861 Vnative_comp_eln_load_path = Fcons (build_string ("../native-lisp/"), Qnil);
5870 5862
5871 DEFVAR_BOOL ("comp-enable-subr-trampolines", comp_enable_subr_trampolines, 5863 DEFVAR_LISP ("native-comp-enable-subr-trampolines",
5872 doc: /* If non-nil, enable primitive trampoline synthesis. 5864 Vnative_comp_enable_subr_trampolines,
5873This makes Emacs respect redefinition or advises of primitive functions 5865 doc: /* If non-nil, enable generation of trampolines for calling primitives.
5874when they are called from Lisp code natively-compiled at `native-comp-speed' 5866Trampolines are needed so that Emacs respects redefinition or advice of
5875of 2. 5867primitive functions when they are called from Lisp code natively-compiled
5868at `native-comp-speed' of 2.
5876 5869
5877By default, this is enabled, and when Emacs sees a redefined or advised 5870By default, the value is t, and when Emacs sees a redefined or advised
5878primitive called from natively-compiled Lisp, it generates a trampoline 5871primitive called from natively-compiled Lisp, it generates a trampoline
5879for it on-the-fly. 5872for it on-the-fly.
5880 5873
5881Disabling this, when a trampoline for a redefined or advised primitive is 5874If the value is a file name (a string), it specifies the directory in
5882not available from previous compilations, means that such redefinition 5875which to deposit the generated trampolines, overriding the directories
5883or advise will not have effect on calls from natively-compiled Lisp code. 5876in `native-comp-eln-load-path'.
5884That is, calls to primitives without existing trampolines from 5877
5885natively-compiled Lisp will behave as if the primitive was called 5878When this variable is nil, generation of trampolines is disabled.
5886directly from C. */); 5879
5880Disabling the generation of trampolines, when a trampoline for a redefined
5881or advised primitive is not already available from previous compilations,
5882means that such redefinition or advice will not have effect when calling
5883primitives from natively-compiled Lisp code. That is, calls to primitives
5884without existing trampolines from natively-compiled Lisp will behave as if
5885the primitive was called directly from C, and will ignore its redefinition
5886and advice. */);
5887 5887
5888 DEFVAR_LISP ("comp-installed-trampolines-h", Vcomp_installed_trampolines_h, 5888 DEFVAR_LISP ("comp-installed-trampolines-h", Vcomp_installed_trampolines_h,
5889 doc: /* Hash table subr-name -> installed trampoline. 5889 doc: /* Hash table subr-name -> installed trampoline.
5890This is used to prevent double trampoline instantiation but also to 5890This is used to prevent double trampoline instantiation, and also to
5891protect the trampolines against GC. */); 5891protect the trampolines against GC. */);
5892 Vcomp_installed_trampolines_h = CALLN (Fmake_hash_table); 5892 Vcomp_installed_trampolines_h = CALLN (Fmake_hash_table);
5893 5893
5894 DEFVAR_LISP ("comp-no-native-file-h", V_comp_no_native_file_h, 5894 DEFVAR_LISP ("comp-no-native-file-h", V_comp_no_native_file_h,
5895 doc: /* Files for which no deferred compilation has to be performed. 5895 doc: /* Files for which no deferred compilation should be performed.
5896These files' compilation should not be deferred because the bytecode 5896These files' compilation should not be deferred because the bytecode
5897version was explicitly requested by the user during load. 5897version was explicitly requested by the user during load.
5898For internal use. */); 5898For internal use. */);
5899 V_comp_no_native_file_h = CALLN (Fmake_hash_table, QCtest, Qequal); 5899 V_comp_no_native_file_h = CALLN (Fmake_hash_table, QCtest, Qequal);
5900 5900
5901 DEFVAR_BOOL ("comp-file-preloaded-p", comp_file_preloaded_p, 5901 DEFVAR_BOOL ("comp-file-preloaded-p", comp_file_preloaded_p,
5902 doc: /* When non-nil assume the file being compiled to 5902 doc: /* When non-nil, assume the file being compiled to be preloaded. */);
5903be preloaded. */);
5904 5903
5905 DEFVAR_LISP ("comp-loaded-comp-units-h", Vcomp_loaded_comp_units_h, 5904 DEFVAR_LISP ("comp-loaded-comp-units-h", Vcomp_loaded_comp_units_h,
5906 doc: /* Hash table recording all loaded compilation units. 5905 doc: /* Hash table recording all loaded compilation units, file -> CU. */);
5907file -> CU. */);
5908 Vcomp_loaded_comp_units_h = 5906 Vcomp_loaded_comp_units_h =
5909 CALLN (Fmake_hash_table, QCweakness, Qvalue, QCtest, Qequal); 5907 CALLN (Fmake_hash_table, QCweakness, Qvalue, QCtest, Qequal);
5910 5908