summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRian McGuire <[email protected]>2024-01-06 14:10:23 +1100
committerKJ Tsanaktsidis <[email protected]>2024-01-06 17:36:35 +1100
commit7db35e10c37f5662d5c41d1d73ffdc5948f6dd2a (patch)
tree42420d1c0ef9ab2e237941423306ced29f890091
parent4112585be557fd804ab849b3961ea71fe9784534 (diff)
Fix GC.measure_total_time regression
Commit 93ac7405b80cc61930d73da04441fa09af1851e1 introduced a regression where measurements would still be taken after setting GC.measure_total_time = false. Fixes [Bug #20157]
-rw-r--r--gc.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/gc.c b/gc.c
index 6d62ca293d..6419f8ff25 100644
--- a/gc.c
+++ b/gc.c
@@ -9749,10 +9749,6 @@ gc_enter_count(enum gc_enter_event event)
}
}
-#ifndef MEASURE_GC
-#define MEASURE_GC (objspace->flags.measure_gc)
-#endif
-
static bool current_process_time(struct timespec *ts);
static void
@@ -9822,12 +9818,18 @@ gc_exit(rb_objspace_t *objspace, enum gc_enter_event event, unsigned int *lock_l
RB_VM_LOCK_LEAVE_LEV(lock_lev);
}
+#ifndef MEASURE_GC
+#define MEASURE_GC (objspace->flags.measure_gc)
+#endif
+
static void
gc_marking_enter(rb_objspace_t *objspace)
{
GC_ASSERT(during_gc != 0);
- gc_clock_start(&objspace->profile.marking_start_time);
+ if (MEASURE_GC) {
+ gc_clock_start(&objspace->profile.marking_start_time);
+ }
}
static void
@@ -9835,7 +9837,9 @@ gc_marking_exit(rb_objspace_t *objspace)
{
GC_ASSERT(during_gc != 0);
- objspace->profile.marking_time_ns += gc_clock_end(&objspace->profile.marking_start_time);
+ if (MEASURE_GC) {
+ objspace->profile.marking_time_ns += gc_clock_end(&objspace->profile.marking_start_time);
+ }
}
static void
@@ -9843,7 +9847,9 @@ gc_sweeping_enter(rb_objspace_t *objspace)
{
GC_ASSERT(during_gc != 0);
- gc_clock_start(&objspace->profile.sweeping_start_time);
+ if (MEASURE_GC) {
+ gc_clock_start(&objspace->profile.sweeping_start_time);
+ }
}
static void
@@ -9851,7 +9857,9 @@ gc_sweeping_exit(rb_objspace_t *objspace)
{
GC_ASSERT(during_gc != 0);
- objspace->profile.sweeping_time_ns += gc_clock_end(&objspace->profile.sweeping_start_time);
+ if (MEASURE_GC) {
+ objspace->profile.sweeping_time_ns += gc_clock_end(&objspace->profile.sweeping_start_time);
+ }
}
static void *