aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Corallo2020-12-28 12:59:12 +0100
committerAndrea Corallo2020-12-28 16:13:31 +0100
commit5a8622ba2c623c60fab5b2784d5f15eeebcf46f2 (patch)
tree30ae25b35f763f50126f2e86283646c73cfe5b18
parenteafcc8eda0a78e78d1a53b30dafb22786dd60591 (diff)
downloademacs-5a8622ba2c623c60fab5b2784d5f15eeebcf46f2.tar.gz
emacs-5a8622ba2c623c60fab5b2784d5f15eeebcf46f2.zip
Reorder subr register function arguments to make some room
* src/comp.c (Fcomp__register_lambda, Fcomp__register_subr) (Fcomp__late_register_subr): Use a rest arg to pass 'doc_idx' and 'intspec' parameters. * lisp/emacs-lisp/comp.el (comp-emit-for-top-level) (comp-emit-lambda-for-top-level): Update.
-rw-r--r--lisp/emacs-lisp/comp.el28
-rw-r--r--src/comp.c27
2 files changed, 29 insertions, 26 deletions
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index 2ca7c50045e..3b84569c458 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -1693,17 +1693,17 @@ the annotation emission."
1693 'comp--late-register-subr 1693 'comp--late-register-subr
1694 'comp--register-subr) 1694 'comp--register-subr)
1695 (make-comp-mvar :constant name) 1695 (make-comp-mvar :constant name)
1696 (make-comp-mvar :constant c-name)
1696 (car args) 1697 (car args)
1697 (cdr args) 1698 (cdr args)
1698 (make-comp-mvar :constant c-name)
1699 (make-comp-mvar 1699 (make-comp-mvar
1700 :constant 1700 :constant
1701 (let* ((h (comp-ctxt-function-docs comp-ctxt)) 1701 (list
1702 (i (hash-table-count h))) 1702 (let* ((h (comp-ctxt-function-docs comp-ctxt))
1703 (puthash i (comp-func-doc f) h) 1703 (i (hash-table-count h)))
1704 i)) 1704 (puthash i (comp-func-doc f) h)
1705 (make-comp-mvar :constant 1705 i)
1706 (comp-func-int-spec f)) 1706 (comp-func-int-spec f)))
1707 ;; This is the compilation unit it-self passed as 1707 ;; This is the compilation unit it-self passed as
1708 ;; parameter. 1708 ;; parameter.
1709 (make-comp-mvar :slot 0)))))) 1709 (make-comp-mvar :slot 0))))))
@@ -1734,15 +1734,17 @@ These are stored in the reloc data array."
1734 (puthash (comp-func-byte-func func) 1734 (puthash (comp-func-byte-func func)
1735 (make-comp-mvar :constant nil) 1735 (make-comp-mvar :constant nil)
1736 (comp-ctxt-lambda-fixups-h comp-ctxt))) 1736 (comp-ctxt-lambda-fixups-h comp-ctxt)))
1737 (make-comp-mvar :constant (comp-func-c-name func))
1737 (car args) 1738 (car args)
1738 (cdr args) 1739 (cdr args)
1739 (make-comp-mvar :constant (comp-func-c-name func))
1740 (make-comp-mvar 1740 (make-comp-mvar
1741 :constant (let* ((h (comp-ctxt-function-docs comp-ctxt)) 1741 :constant
1742 (i (hash-table-count h))) 1742 (list
1743 (puthash i (comp-func-doc func) h) 1743 (let* ((h (comp-ctxt-function-docs comp-ctxt))
1744 i)) 1744 (i (hash-table-count h)))
1745 (make-comp-mvar :constant (comp-func-int-spec func)) 1745 (puthash i (comp-func-doc func) h)
1746 i)
1747 (comp-func-int-spec func)))
1746 ;; This is the compilation unit it-self passed as 1748 ;; This is the compilation unit it-self passed as
1747 ;; parameter. 1749 ;; parameter.
1748 (make-comp-mvar :slot 0))))) 1750 (make-comp-mvar :slot 0)))))
diff --git a/src/comp.c b/src/comp.c
index 52ebf92c500..ee8ae98e2ac 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -4925,13 +4925,14 @@ make_subr (Lisp_Object symbol_name, Lisp_Object minarg, Lisp_Object maxarg,
4925} 4925}
4926 4926
4927DEFUN ("comp--register-lambda", Fcomp__register_lambda, Scomp__register_lambda, 4927DEFUN ("comp--register-lambda", Fcomp__register_lambda, Scomp__register_lambda,
4928 7, 7, 0, 4928 6, 6, 0,
4929 doc: /* Register anonymous lambda. 4929 doc: /* Register anonymous lambda.
4930This gets called by top_level_run during the load phase. */) 4930This gets called by top_level_run during the load phase. */)
4931 (Lisp_Object reloc_idx, Lisp_Object minarg, Lisp_Object maxarg, 4931 (Lisp_Object reloc_idx, Lisp_Object c_name, Lisp_Object minarg,
4932 Lisp_Object c_name, Lisp_Object doc_idx, Lisp_Object intspec, 4932 Lisp_Object maxarg, Lisp_Object rest, Lisp_Object comp_u)
4933 Lisp_Object comp_u)
4934{ 4933{
4934 Lisp_Object doc_idx = FIRST (rest);
4935 Lisp_Object intspec = SECOND (rest);
4935 struct Lisp_Native_Comp_Unit *cu = XNATIVE_COMP_UNIT (comp_u); 4936 struct Lisp_Native_Comp_Unit *cu = XNATIVE_COMP_UNIT (comp_u);
4936 if (cu->loaded_once) 4937 if (cu->loaded_once)
4937 return Qnil; 4938 return Qnil;
@@ -4953,13 +4954,14 @@ This gets called by top_level_run during the load phase. */)
4953} 4954}
4954 4955
4955DEFUN ("comp--register-subr", Fcomp__register_subr, Scomp__register_subr, 4956DEFUN ("comp--register-subr", Fcomp__register_subr, Scomp__register_subr,
4956 7, 7, 0, 4957 6, 6, 0,
4957 doc: /* Register exported subr. 4958 doc: /* Register exported subr.
4958This gets called by top_level_run during the load phase. */) 4959This gets called by top_level_run during the load phase. */)
4959 (Lisp_Object name, Lisp_Object minarg, Lisp_Object maxarg, 4960 (Lisp_Object name, Lisp_Object c_name, Lisp_Object minarg,
4960 Lisp_Object c_name, Lisp_Object doc_idx, Lisp_Object intspec, 4961 Lisp_Object maxarg, Lisp_Object rest, Lisp_Object comp_u)
4961 Lisp_Object comp_u)
4962{ 4962{
4963 Lisp_Object doc_idx = FIRST (rest);
4964 Lisp_Object intspec = SECOND (rest);
4963 Lisp_Object tem = 4965 Lisp_Object tem =
4964 make_subr (SYMBOL_NAME (name), minarg, maxarg, c_name, doc_idx, intspec, 4966 make_subr (SYMBOL_NAME (name), minarg, maxarg, c_name, doc_idx, intspec,
4965 comp_u); 4967 comp_u);
@@ -4982,16 +4984,15 @@ This gets called by top_level_run during the load phase. */)
4982} 4984}
4983 4985
4984DEFUN ("comp--late-register-subr", Fcomp__late_register_subr, 4986DEFUN ("comp--late-register-subr", Fcomp__late_register_subr,
4985 Scomp__late_register_subr, 7, 7, 0, 4987 Scomp__late_register_subr, 6, 6, 0,
4986 doc: /* Register exported subr. 4988 doc: /* Register exported subr.
4987This gets called by late_top_level_run during the load phase. */) 4989This gets called by late_top_level_run during the load phase. */)
4988 (Lisp_Object name, Lisp_Object minarg, Lisp_Object maxarg, 4990 (Lisp_Object name, Lisp_Object c_name, Lisp_Object minarg,
4989 Lisp_Object c_name, Lisp_Object doc, Lisp_Object intspec, 4991 Lisp_Object maxarg, Lisp_Object rest, Lisp_Object comp_u)
4990 Lisp_Object comp_u)
4991{ 4992{
4992 if (!NILP (Fequal (Fsymbol_function (name), 4993 if (!NILP (Fequal (Fsymbol_function (name),
4993 Fgethash (name, Vcomp_deferred_pending_h, Qnil)))) 4994 Fgethash (name, Vcomp_deferred_pending_h, Qnil))))
4994 Fcomp__register_subr (name, minarg, maxarg, c_name, doc, intspec, comp_u); 4995 Fcomp__register_subr (name, c_name, minarg, maxarg, type, rest, comp_u);
4995 Fremhash (name, Vcomp_deferred_pending_h); 4996 Fremhash (name, Vcomp_deferred_pending_h);
4996 return Qnil; 4997 return Qnil;
4997} 4998}