summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2023-02-22 16:07:21 -0500
committerPeter Zhu <peter@peterzhu.ca>2023-02-22 16:09:05 -0500
commit29ec8e151bf27c546a4c40d91c039e8d78f8d9c2 (patch)
tree1da84338e939ef09cf4185bfbeea9401012b66df /gc.c
parent220cdbeea52c4681fb0ba52d24e5b28a0b877e0f (diff)
Make GC faster when RGENGC_CHECK_MODE >= 2
We shouldn't run gc_verify_internal_consistency after every GC step when RGENGC_CHECK_MODE >= 2, only when GC has finished. Running it on every GC step makes it too slow.
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/gc.c b/gc.c
index c4c245ee0b..596f26ede2 100644
--- a/gc.c
+++ b/gc.c
@@ -5951,6 +5951,10 @@ gc_sweep_finish(rb_objspace_t *objspace)
gc_event_hook(objspace, RUBY_INTERNAL_EVENT_GC_END_SWEEP, 0);
gc_mode_transition(objspace, gc_mode_none);
+
+#if RGENGC_CHECK_MODE >= 2
+ gc_verify_internal_consistency(objspace);
+#endif
}
static int
@@ -9765,14 +9769,6 @@ gc_exit(rb_objspace_t *objspace, enum gc_enter_event event, unsigned int *lock_l
during_gc = FALSE;
RB_VM_LOCK_LEAVE_LEV(lock_lev);
-
-#if RGENGC_CHECK_MODE >= 2
- if (event == gc_enter_event_continue && gc_mode(objspace) == gc_mode_none) {
- GC_ASSERT(!during_gc);
- // sweep finished
- gc_verify_internal_consistency(objspace);
- }
-#endif
}
static void