File tree Expand file tree Collapse file tree 1 file changed +12
-8
lines changed Expand file tree Collapse file tree 1 file changed +12
-8
lines changed Original file line number Diff line number Diff line change @@ -1022,16 +1022,20 @@ rb_gc_impl_shutdown_call_finalizer(void *objspace_ptr)
10221022 gc_run_finalizers (objspace );
10231023 }
10241024
1025- struct MMTk_RawVecOfObjRef registered_candidates = mmtk_get_all_obj_free_candidates ();
1026- for (size_t i = 0 ; i < registered_candidates .len ; i ++ ) {
1027- VALUE obj = (VALUE )registered_candidates .ptr [i ];
1028-
1029- if (rb_gc_shutdown_call_finalizer_p (obj )) {
1030- rb_gc_obj_free (objspace_ptr , obj );
1031- RBASIC (obj )-> flags = 0 ;
1025+ unsigned int lev = RB_GC_VM_LOCK ();
1026+ {
1027+ struct MMTk_RawVecOfObjRef registered_candidates = mmtk_get_all_obj_free_candidates ();
1028+ for (size_t i = 0 ; i < registered_candidates .len ; i ++ ) {
1029+ VALUE obj = (VALUE )registered_candidates .ptr [i ];
1030+
1031+ if (rb_gc_shutdown_call_finalizer_p (obj )) {
1032+ rb_gc_obj_free (objspace_ptr , obj );
1033+ RBASIC (obj )-> flags = 0 ;
1034+ }
10321035 }
1036+ mmtk_free_raw_vec_of_obj_ref (registered_candidates );
10331037 }
1034- mmtk_free_raw_vec_of_obj_ref ( registered_candidates );
1038+ RB_GC_VM_UNLOCK ( lev );
10351039
10361040 gc_run_finalizers (objspace );
10371041}
You can’t perform that action at this time.
0 commit comments