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:
parent
a317620a52
commit
bd3cd579cb
@ -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))))
|
||||
|
Loading…
Reference in New Issue
Block a user