diff options
author | Andrea Corallo <andrea.corallo@arm.com> | 2022-10-11 21:17:55 +0200 |
---|---|---|
committer | Andrea Corallo <andrea.corallo@arm.com> | 2022-10-11 21:19:21 +0200 |
commit | 37447209042e174f4e95c8d0166418d2aef018ed (patch) | |
tree | 19d01aa53747137f14bb59337ef89339db0cd46f | |
parent | 61b6da5acef2d550022c664e628346539ba1852f (diff) | |
download | emacs-37447209042e174f4e95c8d0166418d2aef018ed.tar.gz |
Add trampoline AOT compilation target (bug#58318)
* Makefile.in (trampolines): New target.
* lisp/Makefile.in (trampolines): Likewise.
* lisp/emacs-lisp/comp.el (comp-compile-all-trampolines): New
function.
-rw-r--r-- | Makefile.in | 5 | ||||
-rw-r--r-- | lisp/Makefile.in | 6 | ||||
-rw-r--r-- | lisp/emacs-lisp/comp.el | 11 |
3 files changed, 22 insertions, 0 deletions
diff --git a/Makefile.in b/Makefile.in index 741a4c5538a..2d617e2294d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -530,6 +530,11 @@ lisp: src lib lib-src lisp nt: Makefile $(MAKE) -C $@ all +trampolines: src lisp +ifeq ($(HAVE_NATIVE_COMP),yes) + $(MAKE) -C lisp trampolines +endif + # Pass an unexpanded $srcdir to src's Makefile, which then # expands it using its own value of srcdir (which points to the # source directory of src/). diff --git a/lisp/Makefile.in b/lisp/Makefile.in index 256017f6c5b..338814fdda2 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -430,6 +430,12 @@ compile-always: find $(lisp) -name '*.elc' $(FIND_DELETE) $(MAKE) compile +.PHONY: trampolines +trampolines: compile +ifeq ($(HAVE_NATIVE_COMP),yes) + $(emacs) -l comp -f comp-compile-all-trampolines +endif + .PHONY: backup-compiled-files compile-after-backup # Backup compiled Lisp files in elc.tar.gz. If that file already diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 6656b7e57c1..889bffa3f5c 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -4204,6 +4204,17 @@ bytecode definition was not changed in the meantime)." ;;; Compiler entry points. +(defun comp-compile-all-trampolines () + "Pre-compile AOT all trampolines." + (let ((comp-running-batch-compilation t) + ;; We want to target only the 'native-lisp' directory. + (native-compile-target-directory + (car (last native-comp-eln-load-path)))) + (mapatoms (lambda (f) + (when (subr-primitive-p (symbol-function f)) + (message "Compiling trampoline for: %s" f) + (comp-trampoline-compile f)))))) + ;;;###autoload (defun comp-lookup-eln (filename) "Given a Lisp source FILENAME return the corresponding .eln file if found. |