mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-04-28 01:00:52 -07:00
Trace kboards as exact roots
* src/igc.h (igc_alloc_kboard): New. * src/igc.c (igc_alloc_kboard): Implement it. (scan_kbdoard): New helper. * src/keyboard.c (init_kboard): Use igc_alloc_kboard instead of igc_xzalloc_ambig.
This commit is contained in:
parent
7233fcef07
commit
d33c6d0044
4 changed files with 48 additions and 5 deletions
42
src/igc.c
42
src/igc.c
|
|
@ -1752,6 +1752,40 @@ scan_kbd_buffer_ambig (mps_ss_t ss, void *start, void *end, void *closure)
|
|||
}
|
||||
}
|
||||
|
||||
static mps_res_t
|
||||
scan_kboard (mps_ss_t ss, void *start, void *end, void *closure)
|
||||
{
|
||||
struct kboard *kb = start;
|
||||
MPS_SCAN_BEGIN (ss)
|
||||
{
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Voverriding_terminal_local_map));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vlast_command));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vreal_last_command));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vkeyboard_translate_table));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vlast_repeatable_command));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vprefix_arg));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vlast_prefix_arg));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, kbd_queue));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, defining_kbd_macro));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vlast_kbd_macro));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vsystem_key_alist));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, system_key_syms));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vwindow_system));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vinput_decode_map));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vlocal_function_key_map));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, Vdefault_minibuffer_frame));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, echo_string));
|
||||
IGC_FIX12_OBJ (ss, &KVAR (kb, echo_prompt));
|
||||
}
|
||||
MPS_SCAN_END (ss);
|
||||
return MPS_RES_OK;
|
||||
}
|
||||
|
||||
static int _Noreturn foo(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
Default pad, fwd, ...
|
||||
***********************************************************************/
|
||||
|
|
@ -3538,6 +3572,14 @@ igc_xnrealloc_lisp_objs_exact (ptrdiff_t nitems_old,
|
|||
return new;
|
||||
}
|
||||
|
||||
struct kboard *
|
||||
igc_alloc_kboard (void)
|
||||
{
|
||||
struct kboard *kb = xzalloc (sizeof *kb);
|
||||
root_create_exact (global_igc, kb, kb + 1, scan_kboard, "kboard");
|
||||
return kb;
|
||||
}
|
||||
|
||||
static void
|
||||
finalize_bignum (struct Lisp_Bignum *n)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -117,6 +117,7 @@ void igc_xpalloc_exact (void **pa_cell, ptrdiff_t *nitems,
|
|||
void *closure);
|
||||
|
||||
void *igc_xnrealloc_ambig (void *pa, ptrdiff_t nitems, ptrdiff_t item_size);
|
||||
struct kboard *igc_alloc_kboard (void);
|
||||
|
||||
struct Lisp_Vector *igc_alloc_pseudovector (size_t nwords_mem,
|
||||
size_t nwords_lisp,
|
||||
|
|
|
|||
|
|
@ -12841,7 +12841,7 @@ KBOARD *
|
|||
allocate_kboard (Lisp_Object type)
|
||||
{
|
||||
#ifdef HAVE_MPS
|
||||
KBOARD *kb = igc_xzalloc_ambig (sizeof *kb);
|
||||
KBOARD *kb = igc_alloc_kboard ();
|
||||
#else
|
||||
KBOARD *kb = xmalloc (sizeof *kb);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -210,10 +210,10 @@ store_kbd_macro_char (Lisp_Object c)
|
|||
ptrdiff_t ptr_offset = kb->kbd_macro_ptr - kb->kbd_macro_buffer;
|
||||
ptrdiff_t end_offset = kb->kbd_macro_end - kb->kbd_macro_buffer;
|
||||
#ifdef HAVE_MPS
|
||||
kb->kbd_macro_buffer =
|
||||
igc_xpalloc_lisp_objs_exact (kb->kbd_macro_buffer,
|
||||
&kb->kbd_macro_bufsize,
|
||||
1, -1, "kbd-macro-buffer");
|
||||
kb->kbd_macro_buffer
|
||||
= igc_xpalloc_lisp_objs_exact (kb->kbd_macro_buffer,
|
||||
&kb->kbd_macro_bufsize,
|
||||
1, -1, "kbd-macro-buffer");
|
||||
#else
|
||||
kb->kbd_macro_buffer = xpalloc (kb->kbd_macro_buffer,
|
||||
&kb->kbd_macro_bufsize,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue