[ruby-cvs:69270] shyouhei:r62089 (trunk): eliminate CALL_SIMPLE_METHOD

shyouhei at ruby-lang.org shyouhei at ruby-lang.org
Mon Jan 29 16:15:08 JST 2018


shyouhei	2018-01-29 16:15:08 +0900 (Mon, 29 Jan 2018)

  New Revision: 62089

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

  Log:
    eliminate CALL_SIMPLE_METHOD
    
    Arrange operands of several opt_something insns so that jumps to
    opt_send_without_block can be applied to them. This makes it
    possible to eliminate CALL_SIMPLE_METHOD macro at all.  Results
    in binary size of vm_exec_core to change from 27,008 bytes to
    26,016 bytes on my machine. [close GH-1779]
    
    Note however that PC can point somewhere non-instruction now.
    
    -----------------------------------------------------------
    benchmark results:
    minimum results in each 3 measurements.
    Execution time (sec)
    name    before  after
    so_ackermann     0.450  0.426
    so_array         0.789  0.824
    so_binary_trees  5.760  5.635
    so_concatenate   3.594  3.508
    so_count_words   0.211  0.196
    so_exception     0.256  0.244
    so_fannkuch      1.049  1.044
    so_fasta         1.485  1.472
    so_k_nucleotide  1.195  1.216
    so_lists         0.517  0.513
    so_mandelbrot    2.264  2.394
    so_matrix        0.501  0.468
    so_meteor_contest        2.987  2.912
    so_nbody         1.307  1.289
    so_nested_loop   0.908  0.925
    so_nsieve        1.679  1.614
    so_nsieve_bits   2.131  2.092
    so_object        0.620  0.625
    so_partial_sums  1.623  1.675
    so_pidigits      1.135  1.190
    so_random        0.357  0.321
    so_reverse_complement    0.619  0.583
    so_sieve         0.493  0.496
    so_spectralnorm  1.749  1.737
    
    Speedup ratio: compare with the result of `before' (greater is better)
    name    after
    so_ackermann    1.057
    so_array        0.958
    so_binary_trees 1.022
    so_concatenate  1.024
    so_count_words  1.077
    so_exception    1.049
    so_fannkuch     1.004
    so_fasta        1.009
    so_k_nucleotide 0.983
    so_lists        1.007
    so_mandelbrot   0.946
    so_matrix       1.072
    so_meteor_contest       1.026
    so_nbody        1.013
    so_nested_loop  0.982
    so_nsieve       1.040
    so_nsieve_bits  1.018
    so_object       0.992
    so_partial_sums 0.969
    so_pidigits     0.954
    so_random       1.111
    so_reverse_complement   1.062
    so_sieve        0.994
    so_spectralnorm 1.007

  Modified files:
    trunk/compile.c
    trunk/insns.def
    trunk/vm_insnhelper.h


More information about the ruby-cvs mailing list