diff --git a/lisp/emacs-lisp/benchmark.el b/lisp/emacs-lisp/benchmark.el index c5f621c6c86..882b1d68c48 100644 --- a/lisp/emacs-lisp/benchmark.el +++ b/lisp/emacs-lisp/benchmark.el @@ -121,7 +121,11 @@ result. The overhead of the `lambda's is accounted for." (unless (or (natnump repetitions) (and repetitions (symbolp repetitions))) (setq forms (cons repetitions forms) repetitions 1)) - `(benchmark-call (byte-compile '(lambda () ,@forms)) ,repetitions)) + `(benchmark-call (,(if (native-comp-available-p) + 'native-compile + 'byte-compile) + '(lambda () ,@forms)) + ,repetitions)) ;;;###autoload (defun benchmark (repetitions form) diff --git a/lisp/startup.el b/lisp/startup.el index d90e7a7d26e..05d829396d6 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -525,12 +525,16 @@ DIRS are relative." (files &optional recursively load selector)) (defun startup--honor-delayed-native-compilations () "Honor pending delayed deferred native compilations." - (when (and (native-comp-available-p) - comp--delayed-sources) - (require 'comp) - (setq comp--loadable t) - (native--compile-async comp--delayed-sources nil 'late) - (setq comp--delayed-sources nil))) + (if (and (native-comp-available-p) + comp--delayed-sources) + (progn + ;; Require comp before setting `comp--loadable' to break + ;; circularity. + (require 'comp) + (setq comp--loadable t) + (native--compile-async comp--delayed-sources nil 'late) + (setq comp--delayed-sources nil)) + (setq comp--loadable t))) (defvar native-comp-eln-load-path) (defun normal-top-level ()