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…
Add table
Add a link
Reference in a new issue