mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
For incremental GC, we need to get a pointer to the objspace.
We can share this pointer for the following WB process.
And considering icache hit ratio, prcess in the GC.
* gc.c (rb_gc_writebarrier): added.
* gc.c (gc_writebarrier_generational, gc_writebarrier_incremental):
make them NOINLINE because inlining them into rb_gc_writebarrier()
makes a prologue code of rb_gc_writebarrier() longer (storing callee
save registers).
This patch improve the performance of WB on micro-benchmarks.
name ruby 2.1 trunk modified
vm1_gc_wb_ary* 0.511 0.632 0.532
vm1_gc_wb_ary_promoted* 0.578 0.701 0.674
vm1_gc_wb_obj* 0.419 0.575 0.492
vm1_gc_wb_obj_promoted* 0.537 0.664 0.618
(sec)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49987 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
||
|---|---|---|
| .. | ||
| backward | ||
| debug.h | ||
| defines.h | ||
| encoding.h | ||
| intern.h | ||
| io.h | ||
| missing.h | ||
| oniguruma.h | ||
| re.h | ||
| regex.h | ||
| ruby.h | ||
| st.h | ||
| subst.h | ||
| thread.h | ||
| thread_native.h | ||
| util.h | ||
| version.h | ||
| vm.h | ||
| win32.h | ||