1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-29 07:58:28 +00:00

remove comp-emit-funcall

This commit is contained in:
Andrea Corallo 2019-09-18 11:55:25 +02:00
parent a317620a52
commit bd3cd579cb

View File

@ -625,38 +625,6 @@ If NEGATED non nil negate the tested condition."
do (comp-emit-cond-jump var m-test 0 target-label nil)))
(_ (error "Missing previous setimm while creating a switch"))))
(defun comp-emit-funcall (narg)
"Avoid Ffuncall trampoline if possibile.
NARG is the number of Ffuncall arguments."
(comp-stack-adjust (- narg))
(let* ((callee (comp-slot))
(callee-sym-name (comp-mvar-constant callee))
(optimize nil)
(callref nil))
(and (comp-mvar-const-vld callee)
(or (and (>= comp-speed 2)
(eq callee-sym-name (comp-func-symbol-name comp-func))
(setq optimize t)
(setq callref (comp-nargs-p (comp-func-args comp-func))))
;; (and (>= comp-speed 3)
;; (symbol-function callee-sym-name)
;; (subrp (symbol-function callee-sym-name))
;; (setq optimize t)
;; (setq callref (eq 'many
;; (cdr (subr-arity
;; (symbol-function callee-sym-name)))))
;; (setf callee-sym-name ))
))
(if optimize
(if callref
(comp-emit-set-call (comp-callref callee-sym-name
narg (1+ (comp-sp))))
(comp-emit-set-call `(call ,callee-sym-name
,@(cl-loop for i from (1+ (comp-sp))
repeat narg
collect (comp-slot-n i)))))
(comp-emit-set-call (comp-callref 'funcall (1+ narg) (comp-sp))))))
(defmacro comp-op-case (&rest cases)
"Expand CASES into the corresponding pcase.
This is responsible for generating the proper stack adjustment when known and
@ -722,7 +690,8 @@ the annotation emission."
(make-comp-mvar :constant arg)
(comp-slot+1))))
(byte-call
(comp-emit-funcall arg))
(comp-stack-adjust (- arg))
(comp-emit-set-call (comp-callref 'funcall (1+ arg) (comp-sp))))
(byte-unbind
(comp-emit (comp-call 'helper_unbind_n
(make-comp-mvar :constant arg))))