Project

General

Profile

« Previous | Next » 

Revision 0db40783

Added by ko1 (Koichi Sasada) over 10 years ago

  • include/ruby/ruby.h: use rb_gc_writebrrier() simply.
    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