summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2021-03-31 14:49:36 +0200
committerAndrea Corallo <akrl@sdf.org>2021-03-31 19:56:10 +0200
commit613caa9527ef56fb9b810d2b9478cbe9784baca0 (patch)
treef8728f743ec52298e8680355eb0f6a8f0bf46134 /src
parent515378434a44b9979e8c8a6e04203695095bdc40 (diff)
Do not defer compilation when bytecode is explicitly requested (bug#46617)
* src/comp.c (maybe_defer_native_compilation): Check if the file is registered in 'V_comp_no_native_file_h'. (syms_of_comp): 'V_comp_no_native_file_h' new global. * src/lread.c (maybe_swap_for_eln): Register files in 'V_comp_no_native_file_h'. * lisp/faces.el (tty-run-terminal-initialization): Do not explicitly load .elc file to not exclude .eln being loaded in place.
Diffstat (limited to 'src')
-rw-r--r--src/comp.c10
-rw-r--r--src/lread.c6
2 files changed, 15 insertions, 1 deletions
diff --git a/src/comp.c b/src/comp.c
index 857f798a8d8..b286f6077f3 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -4689,7 +4689,8 @@ maybe_defer_native_compilation (Lisp_Object function_name,
|| !NILP (Vpurify_flag)
|| !COMPILEDP (definition)
|| !STRINGP (Vload_true_file_name)
- || !suffix_p (Vload_true_file_name, ".elc"))
+ || !suffix_p (Vload_true_file_name, ".elc")
+ || !NILP (Fgethash (Vload_true_file_name, V_comp_no_native_file_h, Qnil)))
return;
Lisp_Object src =
@@ -5373,6 +5374,13 @@ This is used to prevent double trampoline instantiation but also to
protect the trampolines against GC. */);
Vcomp_installed_trampolines_h = CALLN (Fmake_hash_table);
+ DEFVAR_LISP ("comp-no-native-file-h", V_comp_no_native_file_h,
+ doc: /* Files for which no deferred compilation has to
+be performed because the bytecode version was explicitly requested by
+the user during load.
+For internal use. */);
+ V_comp_no_native_file_h = CALLN (Fmake_hash_table, QCtest, Qequal);
+
Fprovide (intern_c_string ("nativecomp"), Qnil);
#endif /* #ifdef HAVE_NATIVE_COMP */
diff --git a/src/lread.c b/src/lread.c
index e8c257a13cc..ec6f09238ba 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1656,6 +1656,12 @@ maybe_swap_for_eln (bool no_native, Lisp_Object *filename, int *fd,
struct stat eln_st;
if (no_native
+ || load_no_native)
+ Fputhash (*filename, Qt, V_comp_no_native_file_h);
+ else
+ Fremhash (*filename, V_comp_no_native_file_h);
+
+ if (no_native
|| load_no_native
|| !suffix_p (*filename, ".elc"))
return;