From 7f11c8086a4b5924737223322e24be23e9ff34c5 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Thu, 17 Dec 2020 17:20:29 +0900 Subject: reduce barrier counts for GC events mark needs barrier (stop other ractors), but other GC events don't need barriers (maybe...). --- gc.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'gc.c') diff --git a/gc.c b/gc.c index c067ac4745..a5ef670b81 100644 --- a/gc.c +++ b/gc.c @@ -8438,7 +8438,15 @@ gc_enter(rb_objspace_t *objspace, enum gc_enter_event event, unsigned int *lock_ { // stop other ractors RB_VM_LOCK_ENTER_LEV(lock_lev); - rb_vm_barrier(); + + switch (event) { + case gc_enter_event_start: + case gc_enter_event_mark_continue: + rb_vm_barrier(); + break; + default: + break; + } gc_enter_count(event); GC_ASSERT(during_gc == 0); -- cgit v1.2.3