aboutsummaryrefslogtreecommitdiffstats
path: root/src/comp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp.c')
-rw-r--r--src/comp.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/comp.c b/src/comp.c
index 4bd271402c2..2f59164b770 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -41,13 +41,17 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
41#define DATA_RELOC_SYM "d_reloc" 41#define DATA_RELOC_SYM "d_reloc"
42#define DATA_RELOC_IMPURE_SYM "d_reloc_imp" 42#define DATA_RELOC_IMPURE_SYM "d_reloc_imp"
43#define DATA_RELOC_EPHEMERAL_SYM "d_reloc_eph" 43#define DATA_RELOC_EPHEMERAL_SYM "d_reloc_eph"
44
44#define FUNC_LINK_TABLE_SYM "freloc_link_table" 45#define FUNC_LINK_TABLE_SYM "freloc_link_table"
45#define LINK_TABLE_HASH_SYM "freloc_hash" 46#define LINK_TABLE_HASH_SYM "freloc_hash"
46#define COMP_UNIT_SYM "comp_unit" 47#define COMP_UNIT_SYM "comp_unit"
47#define TEXT_DATA_RELOC_SYM "text_data_reloc" 48#define TEXT_DATA_RELOC_SYM "text_data_reloc"
48#define TEXT_DATA_RELOC_IMPURE_SYM "text_data_reloc_imp" 49#define TEXT_DATA_RELOC_IMPURE_SYM "text_data_reloc_imp"
49#define TEXT_DATA_RELOC_EPHEMERAL_SYM "text_data_reloc_eph" 50#define TEXT_DATA_RELOC_EPHEMERAL_SYM "text_data_reloc_eph"
51
50#define TEXT_OPTIM_QLY "text_optim_qly" 52#define TEXT_OPTIM_QLY "text_optim_qly"
53#define TEXT_FDOC_SYM "text_data_fdoc"
54
51 55
52#define SPEED XFIXNUM (Fsymbol_value (Qcomp_speed)) 56#define SPEED XFIXNUM (Fsymbol_value (Qcomp_speed))
53#define COMP_DEBUG XFIXNUM (Fsymbol_value (Qcomp_debug)) 57#define COMP_DEBUG XFIXNUM (Fsymbol_value (Qcomp_debug))
@@ -2097,6 +2101,9 @@ emit_ctxt_code (void)
2097 Fsymbol_value (Qcomp_debug)) }; 2101 Fsymbol_value (Qcomp_debug)) };
2098 emit_static_object (TEXT_OPTIM_QLY, Flist (2, opt_qly)); 2102 emit_static_object (TEXT_OPTIM_QLY, Flist (2, opt_qly));
2099 2103
2104 emit_static_object (TEXT_FDOC_SYM,
2105 CALL1I (comp-ctxt-doc-index-h, Vcomp_ctxt));
2106
2100 comp.current_thread_ref = 2107 comp.current_thread_ref =
2101 gcc_jit_lvalue_as_rvalue ( 2108 gcc_jit_lvalue_as_rvalue (
2102 gcc_jit_context_new_global ( 2109 gcc_jit_context_new_global (
@@ -3619,6 +3626,7 @@ load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump,
3619 comp_u->data_vec = load_static_obj (comp_u, TEXT_DATA_RELOC_SYM); 3626 comp_u->data_vec = load_static_obj (comp_u, TEXT_DATA_RELOC_SYM);
3620 comp_u->data_impure_vec = 3627 comp_u->data_impure_vec =
3621 load_static_obj (comp_u, TEXT_DATA_RELOC_IMPURE_SYM); 3628 load_static_obj (comp_u, TEXT_DATA_RELOC_IMPURE_SYM);
3629 comp_u->data_fdoc_h = load_static_obj (comp_u, TEXT_FDOC_SYM);
3622 3630
3623 if (!NILP (Vpurify_flag)) 3631 if (!NILP (Vpurify_flag))
3624 /* Non impure can be copied into pure space. */ 3632 /* Non impure can be copied into pure space. */
@@ -3668,7 +3676,7 @@ DEFUN ("comp--register-subr", Fcomp__register_subr, Scomp__register_subr,
3668 doc: /* This gets called by top_level_run during load phase to register 3676 doc: /* This gets called by top_level_run during load phase to register
3669 each exported subr. */) 3677 each exported subr. */)
3670 (Lisp_Object name, Lisp_Object minarg, Lisp_Object maxarg, 3678 (Lisp_Object name, Lisp_Object minarg, Lisp_Object maxarg,
3671 Lisp_Object c_name, Lisp_Object doc, Lisp_Object intspec, 3679 Lisp_Object c_name, Lisp_Object doc_idx, Lisp_Object intspec,
3672 Lisp_Object comp_u) 3680 Lisp_Object comp_u)
3673{ 3681{
3674 dynlib_handle_ptr handle = XNATIVE_COMP_UNIT (comp_u)->handle; 3682 dynlib_handle_ptr handle = XNATIVE_COMP_UNIT (comp_u)->handle;
@@ -3688,7 +3696,7 @@ DEFUN ("comp--register-subr", Fcomp__register_subr, Scomp__register_subr,
3688 x->s.max_args = FIXNUMP (maxarg) ? XFIXNUM (maxarg) : MANY; 3696 x->s.max_args = FIXNUMP (maxarg) ? XFIXNUM (maxarg) : MANY;
3689 x->s.symbol_name = xstrdup (SSDATA (Fsymbol_name (name))); 3697 x->s.symbol_name = xstrdup (SSDATA (Fsymbol_name (name)));
3690 x->s.native_intspec = intspec; 3698 x->s.native_intspec = intspec;
3691 x->s.native_doc = doc; 3699 x->s.doc = XFIXNUM (doc_idx);
3692 x->s.native_comp_u[0] = comp_u; 3700 x->s.native_comp_u[0] = comp_u;
3693 Lisp_Object tem; 3701 Lisp_Object tem;
3694 XSETSUBR (tem, &x->s); 3702 XSETSUBR (tem, &x->s);