Commit fd9e9308 authored by Andrea Corallo's avatar Andrea Corallo

Make native compiler tollerant to redefined primitives (bug#44221).

	* lisp/emacs-lisp/comp.el (comp-emit-set-call-subr): Rework based
	on the fact that the subr can now be redefined.
	* test/src/comp-tests.el (primitive-redefine-compile-44221):
	New testcase.
parent 5edc7aa0
Pipeline #7511 failed with stage
in 157 minutes and 48 seconds
......@@ -1153,9 +1153,7 @@ Return value is the fall through block name."
SP-DELTA is the stack adjustment."
(let ((subr (symbol-function subr-name))
(nargs (1+ (- sp-delta))))
(unless (subrp subr)
(signal 'native-ice (list "not a subr" subr)))
(let* ((arity (subr-arity subr))
(let* ((arity (func-arity subr))
(minarg (car arity))
(maxarg (cdr arity)))
(when (eq maxarg 'unevalled)
......
......@@ -430,6 +430,15 @@ https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-03/msg00914.html."
;; Bug#42664, Bug#43280, Bug#44209.
(should-not (subr-native-elisp-p (symbol-function #'comp-test-defsubst-f))))
(comp-deftest primitive-redefine-compile-44221 ()
"Test the compiler still works while primitives are redefined (bug#44221)."
(cl-letf (((symbol-function #'delete-region)
(lambda (_ _))))
(should (subr-native-elisp-p
(native-compile
'(lambda ()
(delete-region (point-min) (point-max))))))))
;;;;;;;;;;;;;;;;;;;;;
;; Tromey's tests. ;;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment