[ruby-cvs:72375] k0kubun:r65275 (trunk): mjit.c: copy inline cache values to MJIT worker

k0kubun at ruby-lang.org k0kubun at ruby-lang.org
Sun Oct 21 22:21:28 JST 2018


k0kubun	2018-10-21 22:21:28 +0900 (Sun, 21 Oct 2018)

  New Revision: 65275

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=65275

  Log:
    mjit.c: copy inline cache values to MJIT worker
    
    on VM_CHECK_INTS. Letting MJIT worker directly see inline cache which
    may be being updated could result in inconsistent IC index and serial.
    
    mjit_worker.c: request the copy job after dequeue, and receive the
    result synchronously.
    
    tool/ruby_vm/views/_mjit_compile_ivar.erb: use the copied IC
    
    mjit_compile.c: change the interface to pass is_entries
    mjit.h: ditto
    
    === Optcarrot Benchmark ===
    Thankfully this didn't have major performance regression.
    
    $ benchmark-driver benchmark.yml --rbenv 'before::before --disable-gems --jit;after::after --disable-gems --jit' -v --repeat-count 24
    before: ruby 2.6.0dev (2018-10-21 trunk 65263) +JIT [x86_64-linux]
    after: ruby 2.6.0dev (2018-10-21 trunk 65263) +JIT [x86_64-linux]
    last_commit=mjit.c: copy inline cache values to MJIT worker
    Calculating -------------------------------------
                                 before       after
    Optcarrot Lan_Master.nes     85.421      85.454 fps
    
    Comparison:
                 Optcarrot Lan_Master.nes
                       after:        85.5 fps
                      before:        85.4 fps - 1.00x  slower

  Modified files:
    trunk/mjit.c
    trunk/mjit.h
    trunk/mjit_compile.c
    trunk/mjit_worker.c
    trunk/tool/ruby_vm/views/_mjit_compile_ivar.erb


More information about the ruby-cvs mailing list