mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-24 06:20:43 -08:00
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.
This commit is contained in:
parent
5edc7aa019
commit
fd9e9308d2
2 changed files with 10 additions and 3 deletions
|
|
@ -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. ;;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue