[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
feature/native-comp 613caa9: Do not defer compilation when bytecode is e
From: |
Andrea Corallo |
Subject: |
feature/native-comp 613caa9: Do not defer compilation when bytecode is explicitly requested (bug#46617) |
Date: |
Wed, 31 Mar 2021 13:56:30 -0400 (EDT) |
branch: feature/native-comp
commit 613caa9527ef56fb9b810d2b9478cbe9784baca0
Author: Andrea Corallo <akrl@sdf.org>
Commit: Andrea Corallo <akrl@sdf.org>
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.
---
lisp/faces.el | 3 ++-
src/comp.c | 10 +++++++++-
src/lread.c | 6 ++++++
3 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/lisp/faces.el b/lisp/faces.el
index 42f4cdd..68bfbba 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -2244,7 +2244,8 @@ If you set `term-file-prefix' to nil, this function does
nothing."
(let ((file (locate-library (concat term-file-prefix
type))))
(and file
(or (assoc file load-history)
- (load file t t)))))
+ (load (file-name-sans-extension file)
+ t t)))))
type)
;; Next, try to find a matching initialization function, and call it.
(tty-find-type #'(lambda (type)
diff --git a/src/comp.c b/src/comp.c
index 857f798..b286f60 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 e8c257a..ec6f092 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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- feature/native-comp 613caa9: Do not defer compilation when bytecode is explicitly requested (bug#46617),
Andrea Corallo <=