From 530faee2752c7b316fa21f2ac4d1266d3e7a38e6 Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Sun, 29 Mar 2020 11:21:55 +0100 Subject: [PATCH] Fix free function compilation --- lisp/emacs-lisp/bytecomp.el | 3 ++- lisp/emacs-lisp/comp.el | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 977f137b793..b3631074472 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -3120,7 +3120,8 @@ for symbols generated by the byte compiler itself." (out (list 'byte-code (byte-compile-lapcode byte-compile-output) byte-compile-vector byte-compile-maxdepth))) (when (and byte-native-compiling - (null byte-compile-not-top-level)) + (or (null byte-compile-not-top-level) + (eq byte-native-compiling 'free-func))) ;; Spill LAP for the native compiler here (push (cons byte-compile-current-form byte-compile-output) byte-to-native-lap)) diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 92d0655ffdc..d29e2f55f1f 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -514,7 +514,8 @@ Put PREFIX in front of it." (cl-defgeneric comp-spill-lap-function ((function-name symbol)) "Byte compile FUNCTION-NAME spilling data from the byte compiler." - (let* ((f (symbol-function function-name)) + (let* ((byte-native-compiling 'free-func) + (f (symbol-function function-name)) (c-name (comp-c-func-name function-name "F")) (func (make-comp-func :name function-name :c-name c-name @@ -536,8 +537,8 @@ Put PREFIX in front of it." (comp-func-frame-size func) (comp-byte-frame-size (comp-func-byte-func func)))) (setf (comp-ctxt-top-level-forms comp-ctxt) - (list (make-byte-to-native-function :name function-name))) - (setf (byte-to-native-function-c-name func) c-name) + (list (make-byte-to-native-function :name function-name + :c-name c-name))) ;; Create the default array. (puthash 0 (comp-func-frame-size func) (comp-func-array-h func)) (comp-add-func-to-ctxt func)))) -- 2.39.5