diff options
author | Koichi Sasada <ko1@atdot.net> | 2020-12-17 17:20:29 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2020-12-17 18:13:26 +0900 |
commit | 7f11c8086a4b5924737223322e24be23e9ff34c5 (patch) | |
tree | 17cce7902781b0db9f377afbf771ada7a99d238e | |
parent | 99b91453809be68c604f94416030addfff3d6142 (diff) |
reduce barrier counts for GC events
mark needs barrier (stop other ractors), but other GC events don't need
barriers (maybe...).
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3923
-rw-r--r-- | gc.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -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); |