mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
b3b5e626ad
64bit CPU environment (sizeof(double) == sizeof(VALUE)). flonum technique enables to avoid double object creation if the double value d is in range about between 1.72723e-77 < |d| <= 1.15792e+77 or 0.0. flonum Float value is immediate and their lowest two bits are b10. If flonum is activated, then USE_FLONUM macro is 1. I'll write detailed in this technique on https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/Flonum_tech * benchmark/bmx_temp.rb: add an benchmark for simple Float calculation. * gc.c (id2ref, rb_obj_id): add flonum Float support. * include/ruby/intern.h: move decl of rb_float_new(double) to include/ruby/ruby.h. * insns.def, vm.c, vm_insnhelper.c: add flonum optimization and simplify source code. * vm_insnhelper.h (FLONUM_2_P): added. * marshal.c: support flonum output. * numeric.c (rb_float_new_in_heap): added. * parse.y: support flonum. * random.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36798 b2dd03c8-39d4-4d8f-98ff-823fe69b080e |
||
---|---|---|
.. | ||
other-lang | ||
bm_app_answer.rb | ||
bm_app_erb.rb | ||
bm_app_factorial.rb | ||
bm_app_fib.rb | ||
bm_app_mandelbrot.rb | ||
bm_app_pentomino.rb | ||
bm_app_raise.rb | ||
bm_app_strconcat.rb | ||
bm_app_tak.rb | ||
bm_app_tarai.rb | ||
bm_app_uri.rb | ||
bm_io_file_create.rb | ||
bm_io_file_read.rb | ||
bm_io_file_write.rb | ||
bm_io_select.rb | ||
bm_io_select2.rb | ||
bm_io_select3.rb | ||
bm_loop_for.rb | ||
bm_loop_generator.rb | ||
bm_loop_times.rb | ||
bm_loop_whileloop.rb | ||
bm_loop_whileloop2.rb | ||
bm_so_ackermann.rb | ||
bm_so_array.rb | ||
bm_so_binary_trees.rb | ||
bm_so_concatenate.rb | ||
bm_so_count_words.rb | ||
bm_so_exception.rb | ||
bm_so_fannkuch.rb | ||
bm_so_fasta.rb | ||
bm_so_k_nucleotide.rb | ||
bm_so_lists.rb | ||
bm_so_mandelbrot.rb | ||
bm_so_matrix.rb | ||
bm_so_meteor_contest.rb | ||
bm_so_nbody.rb | ||
bm_so_nested_loop.rb | ||
bm_so_nsieve.rb | ||
bm_so_nsieve_bits.rb | ||
bm_so_object.rb | ||
bm_so_partial_sums.rb | ||
bm_so_pidigits.rb | ||
bm_so_random.rb | ||
bm_so_reverse_complement.rb | ||
bm_so_sieve.rb | ||
bm_so_spectralnorm.rb | ||
bm_vm1_block.rb | ||
bm_vm1_const.rb | ||
bm_vm1_ensure.rb | ||
bm_vm1_ivar.rb | ||
bm_vm1_ivar_set.rb | ||
bm_vm1_length.rb | ||
bm_vm1_lvar_init.rb | ||
bm_vm1_lvar_set.rb | ||
bm_vm1_neq.rb | ||
bm_vm1_not.rb | ||
bm_vm1_rescue.rb | ||
bm_vm1_simplereturn.rb | ||
bm_vm1_swap.rb | ||
bm_vm2_array.rb | ||
bm_vm2_bigarray.rb | ||
bm_vm2_bighash.rb | ||
bm_vm2_case.rb | ||
bm_vm2_defined_method.rb | ||
bm_vm2_eval.rb | ||
bm_vm2_method.rb | ||
bm_vm2_mutex.rb | ||
bm_vm2_poly_method.rb | ||
bm_vm2_poly_method_ov.rb | ||
bm_vm2_proc.rb | ||
bm_vm2_raise1.rb | ||
bm_vm2_raise2.rb | ||
bm_vm2_regexp.rb | ||
bm_vm2_send.rb | ||
bm_vm2_super.rb | ||
bm_vm2_unif1.rb | ||
bm_vm2_zsuper.rb | ||
bm_vm3_backtrace.rb | ||
bm_vm3_clearmethodcache.rb | ||
bm_vm3_gc.rb | ||
bm_vm_thread_alive_check1.rb | ||
bm_vm_thread_create_join.rb | ||
bm_vm_thread_mutex1.rb | ||
bm_vm_thread_mutex2.rb | ||
bm_vm_thread_mutex3.rb | ||
bm_vm_thread_pass.rb | ||
bm_vm_thread_pass_flood.rb | ||
bm_vm_thread_pipe.rb | ||
bmx_temp.rb | ||
driver.rb | ||
make_fasta_output.rb | ||
prepare_so_count_words.rb | ||
prepare_so_k_nucleotide.rb | ||
prepare_so_reverse_complement.rb | ||
report.rb | ||
run.rb | ||
runc.rb | ||
wc.input.base |