emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MPS: native comp


From: Gerd Möllmann
Subject: Re: MPS: native comp
Date: Mon, 29 Apr 2024 10:02:58 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

Andrea Corallo <acorallo@gnu.org> writes:

>> So, it looks like the string constant "Eager..." is a reference that is
>> not traced. Can you please tell me where I can find these string
>> constants in native cu data structures?
>
> "Eager macro-expansion failure: %S" is an immediate stored in the eln of
> macroexp.el.  This should be deserialized by 'load_static_obj' and
> referenced by 'comp_u->data_vec' (see 'load_comp_unit' comp.c:5402).
>
> Maybe mps is not tracking Lisp_Native_Comp_Unit's fields?

Thanks!

Hm. I think I'm tracing data_vec already. Here is what I do

static mps_res_t
fix_native_cu (mps_ss_t ss, struct Lisp_Native_Comp_Unit *u)
{
  MPS_SCAN_BEGIN (ss)
  {
    IGC_FIX_CALL_FN (ss, struct Lisp_Vector, u, fix_vectorlike);
    if (u->data_imp_relocs)
      {
        size_t n = ASIZE (u->data_impure_vec);
        IGC_FIX12_NOBJS (ss, u->data_imp_relocs, n);
      }
  }
  MPS_SCAN_END (ss);
  return MPS_RES_OK;
}

The fix_vectorlike should cover all Lisp_Objects in u that are in the
Lisp part of the pseudovecor (you know what I mean). That's strange.

Could the non-Lisp part of u contain a reference to the string somewhere
else? The difference to the old GC with MPS is that we need to trace all
references because MPS is a moving collector, and all references must be
changed when an object mvoes.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]