aboutsummaryrefslogtreecommitdiffstats
path: root/src/comp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp.c')
-rw-r--r--src/comp.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/comp.c b/src/comp.c
index 6449eedb278..499eee7e709 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -5411,7 +5411,7 @@ native_function_doc (Lisp_Object function)
5411static Lisp_Object 5411static Lisp_Object
5412make_subr (Lisp_Object symbol_name, Lisp_Object minarg, Lisp_Object maxarg, 5412make_subr (Lisp_Object symbol_name, Lisp_Object minarg, Lisp_Object maxarg,
5413 Lisp_Object c_name, Lisp_Object type, Lisp_Object doc_idx, 5413 Lisp_Object c_name, Lisp_Object type, Lisp_Object doc_idx,
5414 Lisp_Object intspec, Lisp_Object comp_u) 5414 Lisp_Object intspec, Lisp_Object command_modes, Lisp_Object comp_u)
5415{ 5415{
5416 struct Lisp_Native_Comp_Unit *cu = XNATIVE_COMP_UNIT (comp_u); 5416 struct Lisp_Native_Comp_Unit *cu = XNATIVE_COMP_UNIT (comp_u);
5417 dynlib_handle_ptr handle = cu->handle; 5417 dynlib_handle_ptr handle = cu->handle;
@@ -5445,6 +5445,7 @@ make_subr (Lisp_Object symbol_name, Lisp_Object minarg, Lisp_Object maxarg,
5445 x->s.max_args = FIXNUMP (maxarg) ? XFIXNUM (maxarg) : MANY; 5445 x->s.max_args = FIXNUMP (maxarg) ? XFIXNUM (maxarg) : MANY;
5446 x->s.symbol_name = xstrdup (SSDATA (symbol_name)); 5446 x->s.symbol_name = xstrdup (SSDATA (symbol_name));
5447 x->s.native_intspec = intspec; 5447 x->s.native_intspec = intspec;
5448 x->s.command_modes = command_modes;
5448 x->s.doc = XFIXNUM (doc_idx); 5449 x->s.doc = XFIXNUM (doc_idx);
5449#ifdef HAVE_NATIVE_COMP 5450#ifdef HAVE_NATIVE_COMP
5450 x->s.native_comp_u = comp_u; 5451 x->s.native_comp_u = comp_u;
@@ -5467,12 +5468,17 @@ This gets called by top_level_run during the load phase. */)
5467{ 5468{
5468 Lisp_Object doc_idx = FIRST (rest); 5469 Lisp_Object doc_idx = FIRST (rest);
5469 Lisp_Object intspec = SECOND (rest); 5470 Lisp_Object intspec = SECOND (rest);
5471 Lisp_Object command_modes = Qnil;
5472 if (!NILP (XCDR (XCDR (rest))))
5473 command_modes = THIRD (rest);
5474
5470 struct Lisp_Native_Comp_Unit *cu = XNATIVE_COMP_UNIT (comp_u); 5475 struct Lisp_Native_Comp_Unit *cu = XNATIVE_COMP_UNIT (comp_u);
5471 if (cu->loaded_once) 5476 if (cu->loaded_once)
5472 return Qnil; 5477 return Qnil;
5473 5478
5474 Lisp_Object tem = 5479 Lisp_Object tem =
5475 make_subr (c_name, minarg, maxarg, c_name, type, doc_idx, intspec, comp_u); 5480 make_subr (c_name, minarg, maxarg, c_name, type, doc_idx, intspec,
5481 command_modes, comp_u);
5476 5482
5477 /* We must protect it against GC because the function is not 5483 /* We must protect it against GC because the function is not
5478 reachable through symbols. */ 5484 reachable through symbols. */
@@ -5497,9 +5503,13 @@ This gets called by top_level_run during the load phase. */)
5497{ 5503{
5498 Lisp_Object doc_idx = FIRST (rest); 5504 Lisp_Object doc_idx = FIRST (rest);
5499 Lisp_Object intspec = SECOND (rest); 5505 Lisp_Object intspec = SECOND (rest);
5506 Lisp_Object command_modes = Qnil;
5507 if (!NILP (XCDR (XCDR (rest))))
5508 command_modes = THIRD (rest);
5509
5500 Lisp_Object tem = 5510 Lisp_Object tem =
5501 make_subr (SYMBOL_NAME (name), minarg, maxarg, c_name, type, doc_idx, 5511 make_subr (SYMBOL_NAME (name), minarg, maxarg, c_name, type, doc_idx,
5502 intspec, comp_u); 5512 intspec, command_modes, comp_u);
5503 5513
5504 defalias (name, tem); 5514 defalias (name, tem);
5505 5515