diff options
| author | Andrea Corallo | 2020-12-28 12:59:12 +0100 |
|---|---|---|
| committer | Andrea Corallo | 2020-12-28 16:13:31 +0100 |
| commit | 5a8622ba2c623c60fab5b2784d5f15eeebcf46f2 (patch) | |
| tree | 30ae25b35f763f50126f2e86283646c73cfe5b18 | |
| parent | eafcc8eda0a78e78d1a53b30dafb22786dd60591 (diff) | |
| download | emacs-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.el | 28 | ||||
| -rw-r--r-- | src/comp.c | 27 |
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 | ||
| 4927 | DEFUN ("comp--register-lambda", Fcomp__register_lambda, Scomp__register_lambda, | 4927 | DEFUN ("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. |
| 4930 | This gets called by top_level_run during the load phase. */) | 4930 | This 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 | ||
| 4955 | DEFUN ("comp--register-subr", Fcomp__register_subr, Scomp__register_subr, | 4956 | DEFUN ("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. |
| 4958 | This gets called by top_level_run during the load phase. */) | 4959 | This 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 | ||
| 4984 | DEFUN ("comp--late-register-subr", Fcomp__late_register_subr, | 4986 | DEFUN ("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. |
| 4987 | This gets called by late_top_level_run during the load phase. */) | 4989 | This 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 | } |