[ruby-cvs:61900] naruse:r54738 (trunk): * vm_insnhelper.c (INLINE): define as `inline` when it is optimized.

naruse at ruby-lang.org naruse at ruby-lang.org
Sun Apr 24 07:30:42 JST 2016


naruse	2016-04-24 07:30:42 +0900 (Sun, 24 Apr 2016)

  New Revision: 54738

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

  Log:
    * vm_insnhelper.c (INLINE): define as `inline` when it is optimized.
      define as `static inline` when it is not optimized to keep
      the symbol generated.
    
    * vm_insnhelper.c (vm_getivar): use `INLINE` to force inline
      so that a compiler inlines it into vm_getinstancevariable
      and optimizes out is_attr and related branches.
    
    * vm_insnhelper.c (vm_getivar): use `inline` to recommend inline.
      Without this vm1_ivar_set is degraded.
    
      benchmark results:
      minimum results in each 5 measurements.
      Execution time (sec)
      name    ruby 2.4.0dev (2016-04-23 trunk 54727) [x86_64-linux]   ruby 2.4.0dev (2016-04-23 trunk 54733) [x86_64-linux]       built-ruby
      loop_whileloop 0.641                                                   0.642 0.646
      vm1_ivar* 1.002                                                   0.999 0.831
      vm1_ivar_set* 0.369                                                   1.106 0.362
    
      Speedup ratio: compare with the result of `ruby 2.4.0dev (2016-04-23
      trunk 54727) [x86_64-linux]' (greater is better)
      name    ruby 2.4.0dev (2016-04-23 trunk 54733) [x86_64-linux]
      built-ruby
      loop_whileloop
      0.998        0.991
      vm1_ivar*
      1.003        1.205
      vm1_ivar_set*
      0.334        1.018

  Modified files:
    trunk/ChangeLog
    trunk/vm_insnhelper.c


More information about the ruby-cvs mailing list