diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-29 07:15:08 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-29 07:15:08 +0000 |
commit | c788fb48086653599cf51b9dd128b8efe7dec33c (patch) | |
tree | 61260067141ebc574c176f781f1c15863e13bea1 /vm_insnhelper.h | |
parent | 31ecd18f1aa0589571c2a1264d9e45d7b228d644 (diff) | |
download | bundler-c788fb48086653599cf51b9dd128b8efe7dec33c.tar.gz |
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
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62089 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_insnhelper.h')
-rw-r--r-- | vm_insnhelper.h | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/vm_insnhelper.h b/vm_insnhelper.h index 0fc31d2cea..01ea7a2a3e 100644 --- a/vm_insnhelper.h +++ b/vm_insnhelper.h @@ -194,14 +194,6 @@ enum vm_regan_acttype { #define USE_IC_FOR_SPECIALIZED_METHOD 1 #endif -#define CALL_SIMPLE_METHOD(recv_) do { \ - struct rb_calling_info calling; \ - calling.block_handler = VM_BLOCK_HANDLER_NONE; \ - calling.argc = ci->orig_argc; \ - vm_search_method(ci, cc, calling.recv = (recv_)); \ - CALL_METHOD(&calling, ci, cc); \ -} while (0) - #define NEXT_CLASS_SERIAL() (++ruby_vm_class_serial) #define GET_GLOBAL_METHOD_STATE() (ruby_vm_global_method_state) #define INC_GLOBAL_METHOD_STATE() (++ruby_vm_global_method_state) |