1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-17 08:31:09 -08:00

Don't access other MPS objects in fix_comp_unit

This commit is contained in:
Gerd Möllmann 2024-04-30 20:27:38 +02:00
parent 525a9e5bce
commit 060ed640af
4 changed files with 30 additions and 6 deletions

View file

@ -75,8 +75,12 @@ b die
#settings set -- target.run-args --module-assertions --no-init-file --no-site-file --no-site-lisp -L ":." -l ert --eval "(setq treesit-extra-load-path '(\"/Users/gerd/.emacs.d/tree-sitter\"))" -l lisp/emacs-lisp/package-tests --batch --eval '(ert-run-tests-batch-and-exit (quote (not (or (tag :expensive-test) (tag :unstable) (tag :nativecomp)))))'
# Von Helmut:
target create emacs
command alias go process launch --tty --working-dir .
settings set -- target.run-args -Q --eval '(progn (view-hello-file) (redisplay) (igc--collect) (forward-line))'
#target create emacs
#command alias go process launch --tty --working-dir .
#settings set -- target.run-args -Q --eval '(progn (view-hello-file) (redisplay) (igc--collect) (forward-line))'
target create temacs
settings set -- target.run-args --batch -l loadup --temacs=pbootstrap --bin-dest /Users/gerd/emacs/savannah/igc/nextstep/Emacs.app/Contents/MacOS/ --eln-dest /Users/gerd/emacs/savannah/igc/nextstep/Emacs.app/Contents/Frameworks/
command alias go process launch --working-dir .
# end.

View file

@ -5412,10 +5412,16 @@ load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump,
}
EMACS_INT d_vec_len = XFIXNUM (Flength (comp_u->data_vec));
#ifdef HAVE_MPS
comp_u->n_data_relocs = d_vec_len;
#endif
for (EMACS_INT i = 0; i < d_vec_len; i++)
data_relocs[i] = AREF (comp_u->data_vec, i);
d_vec_len = XFIXNUM (Flength (comp_u->data_impure_vec));
#ifdef HAVE_MPS
comp_u->n_data_imp_relocs = d_vec_len;
#endif
for (EMACS_INT i = 0; i < d_vec_len; i++)
data_imp_relocs[i] = AREF (comp_u->data_impure_vec, i);
}
@ -5444,6 +5450,10 @@ load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump,
EMACS_INT d_vec_len = XFIXNUM (Flength (data_ephemeral_vec));
for (EMACS_INT i = 0; i < d_vec_len; i++)
data_eph_relocs[i] = AREF (data_ephemeral_vec, i);
# ifdef HAVE_MPS
comp_u->data_eph_relocs = data_eph_relocs;
comp_u->n_data_eph_relocs = d_vec_len;
# endif
}
/* Executing this will perform all the expected environment
modifications. */

View file

@ -48,7 +48,11 @@ struct Lisp_Native_Comp_Unit
/* STUFFS WE DO NOT DUMP!! */
Lisp_Object *data_imp_relocs;
# ifdef HAVE_MPS
size_t n_data_imp_relocs;
Lisp_Object *data_relocs;
size_t n_data_relocs;
Lisp_Object *data_eph_relocs;
size_t n_data_eph_relocs;
# endif
bool loaded_once;
bool load_ongoing;

View file

@ -1592,14 +1592,19 @@ fix_comp_unit (mps_ss_t ss, struct Lisp_Native_Comp_Unit *u)
IGC_FIX_CALL_FN (ss, struct Lisp_Vector, u, fix_vectorlike);
if (u->data_imp_relocs)
{
size_t n = ASIZE (u->data_impure_vec);
size_t n = u->n_data_imp_relocs;
IGC_FIX12_NOBJS (ss, u->data_imp_relocs, n);
}
if (u->data_relocs)
{
size_t n = ASIZE (u->data_vec);
size_t n = u->n_data_relocs;
IGC_FIX12_NOBJS (ss, u->data_relocs, n);
}
if (u->data_eph_relocs)
{
size_t n = u->n_data_eph_relocs;
IGC_FIX12_NOBJS (ss, u->data_eph_relocs, n);
}
}
MPS_SCAN_END (ss);
return MPS_RES_OK;
@ -2279,8 +2284,9 @@ static void
finalize_comp_unit (struct Lisp_Native_Comp_Unit *u)
{
unload_comp_unit (u);
u->data_eph_relocs = NULL;
u->data_imp_relocs = NULL;
u->data_imp_relocs = NULL;
u->data_relocs = NULL;
}
static void