mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Prevent MJIT compilation from running while moving
pointers.
Instead of 4fe908c164
, just locking the MJIT
worker may be fine for this case. And also we might have the same issue
in all `gc_compact_after_gc` calls.
This commit is contained in:
parent
6b5e712361
commit
797d7efde1
1 changed files with 4 additions and 0 deletions
4
gc.c
4
gc.c
|
@ -8272,6 +8272,8 @@ gc_compact_after_gc(rb_objspace_t *objspace, int use_toward_empty, int use_doubl
|
|||
{
|
||||
if (0) fprintf(stderr, "gc_compact_after_gc: %d,%d,%d\n", use_toward_empty, use_double_pages, use_verifier);
|
||||
|
||||
mjit_gc_start_hook(); // prevent MJIT from running while moving pointers related to ISeq
|
||||
|
||||
if (use_verifier) {
|
||||
gc_verify_internal_consistency(Qnil);
|
||||
}
|
||||
|
@ -8315,6 +8317,8 @@ gc_compact_after_gc(rb_objspace_t *objspace, int use_toward_empty, int use_doubl
|
|||
(void)moved_list;
|
||||
#endif
|
||||
|
||||
mjit_gc_exit_hook(); // unlock MJIT here, because `rb_gc()` calls `mjit_gc_start_hook()` again.
|
||||
|
||||
/* GC after compaction to eliminate T_MOVED */
|
||||
rb_gc();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue